10.04.2017

Ngày hôm qua

 Cho ngày d/m/y . Hãy kiểm tra xem đó có phi là ngày tháng năm hợp lệ không? Nếu hợp lệ, hãy tính ra ngày trước của nó

                                                                 Giải

   Var  i,j,ngay,thang,nam,ng,th,n,t1,t2,t3,t4,t5,t6,t7,t8,t9,t10,t11,t12,ngh: integer; 
          nhuan: boolean;
Begin
   nhuan:=false; Write('Nhap ngay, thang nam: '); Readln(ngay,thang,nam);
   If (thang > 12) then Writeln('ngay: ',ngay,'/',thang,'/',nam,' ban nhap khogn hop le')
   Else begin
       Case thang of
           1: ng:=31; 2: ng:=28; 3: ng:=31; 4: ng:=30; 5: ng:=31; 6: ng:=30; 7: ng:=31;
           8: ng:=31; 9: ng:=30;10: ng:=31;11: ng:=30;12: ng:=31; end;
       Case thang-1 of
          1: ngh:=31; 2: ngh:=28;3: ngh:=31; 4: ngh:=30;5: ngh:=31;6: ngh:=30;7: ngh:=31;
           8: ngh:=31; 9: ngh:=30;10: ngh:=31;11: ngh:=30; end;
       if ((nam mod 4=0) and (nam mod 100<>0) or (nam mod 400=0)) and (thang = 2) then ng:=29;
       if (nam mod 4=0) and (nam mod 100<>0) or (nam mod 400=0) then nhuan := true;
       if ngay > ng then Writeln('ngay ban nhap: ',ngay,'/',thang,'/',nam,' la khogn hop le')
       Else begin
                   If (thang = 1) And (ngay = 1) Then
                      begin  ng:=31; th:=12; n:=nam-1;Writeln('Ngay truoc do la ngay: ',ng,'/',th,'/',n); End
                   Else If (thang = 3) And (ngay = 1) Then Begin 
                          If nhuan Then begin ng:=29;th:=2;Writeln('Ngay truoc do la ngay: ',ng,'/',th,'/',nam);End
                          Else begin ng:=28; th:=2;Writeln('Ngay truoc do la ngay: ',ng,'/',th,'/',nam);end;End
                      Else If ngay = 1 Then begin ng:=ngh;th:= thang - 1;Writeln('Ngay truoc do la ngay: ',ng,'/',th,'/',nam);End
                            Else begin ng:=ngay-1;Writeln('Ngay truoc do la ngay: ',ng,'/',thang,'/',nam);end;end;end;Readln;
END.

No comments:

Post a Comment

Cảm ơn bạn đã nhận xét