Dny mezi dvema daty – Pascal – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Dny mezi dvema daty – Pascal – Fórum – Programujte.comDny mezi dvema daty – Pascal – Fórum – Programujte.com

 

kejta0
Návštěvník
21. 11. 2013   #1
-
0
-

   

....

function Prestupny (Rok: integer): boolean;
begin
Prestupny:= ((Rok mod 4 =0) and (Rok mod 100<>0)) or (Rok mod 400=0);
end;

begin
Writeln ('Zadej prvni datum:');
read (Den1,Mesic1,Rok1);
Writeln ('Zadej druhe datum:');
read (Den2,Mesic2,Rok2);

PocetDni:=0;
for i:= Rok1 to Rok2 do
if Prestupny(i) then PocetDni:=(Rok2-Rok1)*366
else PocetDni:=(Rok2-Rok1)*365;

....         

Mohu se zeptat, kde mam chybu v teto funkci? a proc se pocita spatne?

Nahlásit jako SPAM
IP: 85.70.175.–
miHan0
Návštěvník
21. 11. 2013   #2
-
0
-

No jestli dobře koukám, tak máš jednu funkci (Prestupny) a k ní dvě těla (dva bloky begin-end)

Nahlásit jako SPAM
IP: 46.13.193.–
kejta0
Návštěvník
21. 11. 2013   #3
-
0
-

#2 miHan
ta funkce je jen ta prvni cast, ta druha je cast je uz ta problematicka cast toho programu kam pomoci te funkce chci neco vyhodnotit..

Nahlásit jako SPAM
IP: 85.70.175.–
miHan0
Návštěvník
21. 11. 2013   #4
-
0
-
Nahlásit jako SPAM
IP: 46.13.193.–
kejta0
Návštěvník
21. 11. 2013   #5
-
0
-

Taky jsem se o těchto funkcích dočetl, ale vůbec jsem se je zatím neučili, tudíž je nejspíš nemáme používat. 

Nahlásit jako SPAM
IP: 85.70.175.–
kejta0
Návštěvník
21. 11. 2013   #6
-
0
-

Ale každopádně díky za snahu. Na řešení už jsem přišel, měl jsem napsaný nesmysly v tom for cyklu.

Nahlásit jako SPAM
IP: 85.70.175.–
Honzc0
Stálý člen
22. 11. 2013   #7
-
0
-

#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;
Nahlásit jako SPAM
IP: 93.181.78.–
Honzc0
Stálý člen
22. 11. 2013   #8
-
0
-

#6 kejta
Tak jsem zkoušel ještě jednou tu tvou funkci  function Prestupny (Rok: integer): boolean;

a kdybys ji napsal takto:

function Prestupny (Rok: integer): boolean;
begin
  Prestupny := (Rok mod 4=0)and((Rok mod 100<>0)or(Rok mod 400=0));
end;

tak by to fungovalo.

Nahlásit jako SPAM
IP: 93.181.78.–
kejta0
Návštěvník
22. 11. 2013   #9
-
0
-

Díky za postřehy, přesně takto jsem to vyřešil. :)

Nahlásit jako SPAM
IP: 85.70.175.–
kejta0
Návštěvník
22. 11. 2013   #10
-
0
-

btw. a ta funkce funguje i podle toho meho predchoziho navrhu:)

Nahlásit jako SPAM
IP: 85.70.175.–
miHan0
Návštěvník
22. 11. 2013   #11
-
0
-

#5 kejta
Taky jsem se o těchto funkcích dočetl, ale vůbec jsem se je zatím neučili, tudíž je nejspíš nemáme používat.

To že jste se to neučili neznamená, že bys to neměl používat, Je kvantum věcí který se nevyučují a přes to jsou fajn  .

Každopádně jsem rád že se ti to povedlo vyřešit.

Nahlásit jako SPAM
IP: 46.13.193.–
zdenenenecek
~ Anonymní uživatel
4 příspěvky
16. 12. 2013   #12
-
0
-

Supeeer děkuji moc, moc mi to pomohlo.. MILUJI PASCAL!  

Nahlásit jako SPAM
IP: 195.113.171.–
katullina
~ Anonymní uživatel
4 příspěvky
16. 12. 2013   #13
-
0
-

#12 zdenenenecek
Jé tak to jo ja taky MILUJU PASCAL      

Nahlásit jako SPAM
IP: 195.113.171.–
zdenenenecek
~ Anonymní uživatel
4 příspěvky
16. 12. 2013   #14
-
0
-

NECHTĚLA BYS DÁT RANDE?   jsme si souzeni

Nahlásit jako SPAM
IP: 195.113.171.–
katullina
~ Anonymní uživatel
4 příspěvky
16. 12. 2013   #15
-
0
-

#14 zdenenenecek
Tak proč ne,když jsme si asi souzeni  Kde  a kdy ?

Nahlásit jako SPAM
IP: 195.113.171.–
zdenenenecek
~ Anonymní uživatel
4 příspěvky
16. 12. 2013   #16
-
0
-

#15 katullina
Nooo, končím 11.30 v prác tak můůžem paaak, ty můůj Pascálku :-)   

Nahlásit jako SPAM
IP: 195.113.171.–
katullina
~ Anonymní uživatel
4 příspěvky
16. 12. 2013   #17
-
0
-

#16 zdenenenecek
Dobře,tak potom můžeme něco vymyslet Pascálku :)  

Nahlásit jako SPAM
IP: 195.113.171.–
zdenenenecek
~ Anonymní uživatel
4 příspěvky
16. 12. 2013   #18
-
0
-

   

      

Nahlásit jako SPAM
IP: 195.113.171.–
katullina
~ Anonymní uživatel
4 příspěvky
16. 12. 2013   #19
-
0
-

#18 zdenenenecek
Tak se teš       

Nahlásit jako SPAM
IP: 195.113.171.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 8 hostů

Podobná vlákna

Rozdíl mezi dvěma příkazy — založil Montezo

Rozdíl mezi dvěma zápisy — založil Tomáš

Proměná, mezi dvěma událostmi — založil Petr Sýkora

C# primka mezi dvema body — založil Kryspin

Moderátoři diskuze

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý