#6 kejta
Nejdříve k té funkci
function Prestupny (Rok: integer): boolean;
Podle deklarace má být výstupem logická hodnota tedy (True nebo False (také možno 1 nebo 0)
A ty tam děláš nějaké vyhodnocování, které ovšem není v podmínce.
Tedy zkus to takhle:
function Prestupny (Rok: integer): boolean;
begin
if ((Rok mod 4 =0) and (Rok mod 100<>0)) or (Rok mod 400=0)then
Prestupny := True
else
Prestupny := False;
end;
k programu:
Co myslíš, že ti to bude počítat? (až ti to projde přes funkci Prestupny)
V každém kroku zjistíš, zda je tento rok přestupný nebo není a pak do proměnné Pocet dní vložíš 366 nebo 365.
To znamená, že na konci budeš mít v proměnné Pocet dni buď (Rok2-Rok1)*366 (pokud ten poslední rok bude přestupný) nebo (Rok2-Rok1)*365 (pokd nebude) a to jistě nechceš.
Aby ti to dělalo dobře pak musíš cyklus udělat takto:
PocetDni:=0;
for i := Rok1 to Rok2 do
if Prestupny(i) then
PocetDni := PocetDni+366
else
PocetDni := PocetDni+365;
Ještě poznámka:
Jestli chceš zjistit kolik dní uplynulo od prvního data do druhého data (a to jistě chceš), pak počítej jen celé roky mezi hodnotami Rok 2 a Rok1 (a zbytek už spočítáš z měsíců a dní Rok1 a Rok2), tedy v cyklu použij
PocetDni:=0;
for i := Rok1+1 to Rok2-1 do
if Prestupny(i) then
PocetDni := PocetDni+366
else
PocetDni := PocetDni+365;