Advertisement
alvsjo

domaci 1

Jan 1st, 2017
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Pascal 2.44 KB | None | 0 0
  1. program ntidan;
  2. //program izracunava datum nakon n dana od datog datuma
  3.  
  4. var
  5. d1,d2,m1,m2,g1,g2,n: integer;
  6.  
  7. function prestupna(n:integer):integer; //funkcija ispituje prestupnost godine
  8. begin
  9.     if ((n mod 4=0) and not(n mod 100=0)) or (n mod 400=0) then
  10.         prestupna:=1
  11.         else prestupna:=0;
  12. end;
  13.  
  14. function kd(d,m,g:integer):boolean; //funkcija ispituje da je argument korektan datum
  15. var maxdan:integer;
  16. begin
  17.     case (m) of
  18.         1,3,5,7,8,10,12: maxdan:=31;
  19.         2: maxdan:=28+prestupna(g);
  20.         4,6,9,11: maxdan:=30;
  21.     end;
  22.     kd:=(m>0) and (m<13) and (d>0) and (d<=maxdan);
  23. end;
  24.  
  25. function danugod (d,m,g:integer):integer; //funkcija odredjuje redni broj dana u godini
  26. var rez:integer;
  27. begin
  28.     case (m) of
  29.         1: rez:=d;
  30.         2: rez:=31+d;
  31.         3: rez:=59+prestupna(g)+d;
  32.         4: rez:=90+prestupna(g)+d;
  33.         5: rez:=120+prestupna(g)+d;
  34.         6: rez:=151+prestupna(g)+d;
  35.         7: rez:=181+prestupna(g)+d;
  36.         8: rez:=212+prestupna(g)+d;
  37.         9: rez:=243+prestupna(g)+d;
  38.         10: rez:=273+prestupna(g)+d;
  39.         11: rez:=304+prestupna(g)+d;
  40.         12: rez:=334+prestupna(g)+d;
  41.     end;
  42.     danugod:=rez;
  43. end;
  44.  
  45. procedure ndan(d1,m1,g1,n:integer; var d2,m2,g2:integer); //funkcija odredjuje datum nakon n dana
  46. begin
  47. d2:=danugod(d1,m1,g1)+n;
  48. g2:=g1;
  49. while (d2>(365+prestupna(g2)))do
  50.     begin
  51.     g2:=g2+1;
  52.     d2:=d2-365-prestupna(g2-1);
  53.     end;
  54. m2:=1;
  55. if (d2>=334+prestupna(g2)) then begin m2:=12; d2:=d2-334-prestupna(g2); end
  56. else if (d2>304+prestupna(g2)) then begin m2:=11; d2:=d2-304-prestupna(g2); end
  57. else if (d2>273+prestupna(g2)) then begin m2:=10; d2:=d2-273-prestupna(g2); end
  58. else if (d2>243+prestupna(g2)) then begin m2:=9; d2:=d2-243-prestupna(g2); end
  59. else if (d2>212+prestupna(g2)) then begin m2:=8; d2:=d2-212-prestupna(g2); end
  60. else if (d2>181+prestupna(g2)) then begin m2:=7; d2:=d2-181-prestupna(g2); end
  61. else if (d2>151+prestupna(g2)) then begin m2:=6; d2:=d2-151-prestupna(g2); end
  62. else if (d2>120+prestupna(g2)) then begin m2:=5; d2:=d2-120-prestupna(g2); end
  63. else if (d2>90+prestupna(g2)) then begin m2:=4; d2:=d2-90-prestupna(g2); end
  64. else if (d2>59+prestupna(g2)) then begin m2:=3; d2:=d2-59-prestupna(g2); end
  65. else if (d2>31) then begin m2:=2; d2:=d2-31; end;
  66.  writeln(d2,'. ',m2,'. ',g2,'. ')
  67. end;
  68.  
  69.  
  70.  
  71. begin
  72. write ('dan= '); readln(d1);
  73. write ('mjesec:= '); readln(m1);
  74. write ('godina:= '); readln(g1);
  75. write ('broj dana '); readln(n);
  76. if (kd(d1,m1,g1)) then
  77.         begin
  78.         ndan(d1,m1,g1,n,d2,m2,g2);
  79.         end
  80.     else writeln (' los datum');
  81. readln;
  82. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement