Menghitung Selang Hari Dengan Program Turbo Pascal




Program SelangHari;
Uses Crt;
{Deklarasi variable}
Var
    Y1, M1, D1, Y2, M2, D2,
    UB1, UB2, UT, YX, R1,
    R2, I1, I2, MX1, MX2, L   : Integer;
    benar                     : boolean;
{Program kami}
Begin
     clrscr;
     benar := true;
     Writeln ('Selamat datang di Program Selang Hari');
     {Input}
     repeat
     begin
     repeat
           Write ('Masukan tanggal pertama = '); readln (D1);
     until ((D1>0) and (D1<=31));
     repeat
           Write ('Masukan bulan pertama = '); readln (M1);
     until (M1>0) and (M1<=12);
     repeat
           Write ('Masukan tahun pertama = '); readln (Y1);
     until (Y1>0);

     if (D1>0) or (M1>0) or (M1<=12) or (Y1>0) then benar := true
     else {Jika isi variabel (D1<=0) or (M1<=0) or (M1>12) or (Y1<=0)}
     benar := false;
         case M1 of
           1,3,5,7,8,10,12 : UB1 := 31;
           4,6,9,11        : UB1 := 30;
           2 : if Y1 mod 4=0 then UB1 := 29
               else UB1 := 28;{Jika isi variabel Y1 mod 4 tidak sama dengan 0}
     end;
     end;
     until (D1>0) and (D1<=UB1);
           I1 := 0;
           MX1:= M1;
           if M1 = 1 then R1:= D1
           else {Jika isi variabel M1 tidak sama dengan 1}
           begin
           for M1:= 1 to M1-1 do
           begin
              case M1 of
                1,3,5,7,8,10,12 : UB1 := 31;
                4,6,9,11        : UB1 := 30;
                2 : if Y1 mod 4=0 then UB1 := 29
                    else UB1 := 28;{jika isi variabel Y1 mod 4 tidak sama
                    dengan 0}
           end;

     I1 := I1 + UB1;
     end;
     end;
     R1 := I1 + D1;

     writeln;
     repeat
     begin
     repeat
           Write ('Masukan tanggal kedua = '); readln (D2);
     until ((D2>0) and (D2<=31));
     repeat
           Write ('Masukan bulan kedua = '); readln (M2);
     until (M2>0) and (M2<=12);
     repeat
           Write ('Masukan tahun kedua = '); readln (Y2);
     until (Y2>0);

     if (D2>0) or (M2>0) or (M2<=12) or (Y2>0) then benar := true
     else {Jika isi variabel (D2<=0) or (M2<=0) or (M2>12) or (Y2<=0)}
     benar := false;
         case M2 of
           1,3,5,7,8,10,12 : UB2 := 31;
           4,6,9,11 : UB2  := 30;
           2 : if Y2 mod 4=0 then UB2 := 29
               else UB2 := 28;{jika isi variabel Y2 mod 4 tidak sama dengan 0}
     end;
     end;
     until (D2>0) and (D2<=UB2);
           I2 := 0;
           MX2:= M2;
           if M2 = 1 then R2:= D2
           else {Jika isi variabel M2 tidak sama dengan 1}
           begin
           for M2:= 1 to M2-1 do
           begin
             case M2 of
               1,3,5,7,8,10,12 : UB2 := 31;
               4,6,9,11        : UB2 := 30;
               2 : if Y2 mod 4=0 then UB2 := 29
                   else UB2 := 28;{jika isi variabel Y2 mod 4 tidak sama
                   dengan 0}
           end;
           I2 := I2 + UB2;
           end;
           end;

     if Y1 mod 4=0 then UT := 366
     else {jika isi variabel Y1 mod 4 tidak sama dengan 0}
     UT := 365;
     YX := Y2-Y1;
     R2 := (I2+D2)+(UT*YX);
     {Proses}
     if R2>R1 then benar := true
     else benar := false;{Jika variabel R1>R2 maka program salah}
     L := R2-R1;
     {Output}
     Writeln;
     begin
     if R2-R1>0 then
      Writeln ('Jadi selang hari antara ',D1,'-',MX1,'-',Y1,'',' dan ',
      D2,'-',MX2,'-',Y2,'',' yakni: ',R2-R1,' hari,')
     else {Jika variabel R1>R2 maka program salah}
      Writeln ('Cek kembali tanggal, bulan dan tahun anda yang anda inputkan')
     end;
End.





Komentar

Posting Komentar