Vydělávej až 160.000 Kč měsíčně! Akreditované rekvalifikační kurzy s garancí práce od 0 Kč. Více informací.
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Avatar
vgl
Člen
Avatar
vgl:29.5.2015 20:58

Zdravím,

potřeboval bych pomoci s tímto příkladem :
"Napište program v jazyku Object Pascal, kterým se určí počet dní, které uplynou mezi zadanými dvěma daty. Každé z dat je zadáno trojicí čísel ve tvaru den DD MM
RRRR."

Vím si rady pouze v případě, že bych měl zadávat pouze roky. Jsem na tohle docela jelito, takže vítám jakékoli popostrčení :).

 
Odpovědět
29.5.2015 20:58
Avatar
Odpovídá na vgl
Neaktivní uživatel:29.5.2015 21:34

Ahoj, moc ti toho neporadím, ale asi bych to udělal tak, že si vytvořím dvě proměnné typu TDate, do kterých uložím ty data. Poté je jen nějak odečtu od sebe. Už si bohužel nepamatuji, jak se to dělá, musel bys pohledat. :(
TDate počítá s přestupnými roky, takže by neměl být problém. :)

Nahoru Odpovědět
29.5.2015 21:34
Neaktivní uživatelský účet
Avatar
Martin Dráb
Tvůrce
Avatar
Odpovídá na vgl
Martin Dráb:29.5.2015 22:47

Ono je to spíš pracné než zábavné, pokud to máš dělat tak, jak by se vyučující(mu) líbilo, tzn. to ručně počítat. Je třeba dávat pozor na přestupné roky (každý čtvrtý, ale myslím, že každý stý a čtyřstý zase přestupné nejsou) a přestupné únory. Dá se v zásadě postupovat tak, že nejdříve spočítáš počet čistých let mezi dvěma daty (když je vzdálenost 2,5 roku, tak to znamená dva čisté roky), pak přejít na měsíce a případně na dny. Další možnost je, že každé datum si vyjádříš jako počet dní od určitého roku (třeba od roku 1600, nebo od roku 0) a pak je prostě odečteš.

Já používám (pravda, nepíšu ji multiplatformě) ve Windows následující postup:

  1. vyplním strukturu SYSTEMTIME prvním datem,
  2. přes SystemTimeToFi­leTime ji převedu na čas vyjádřený jako 64bitové číslo (jedná se o počet 100 ns jednotek od 1.1.1601),
  3. body 1) a 2) provedu s druhým datem,
  4. obě 64bitová čísla od sebe odečtu. Pak už stačí výsledek pouze vydělit číslem (86400*10000000), což je počet 100 ns jednotek za den a mělo by být hotovo.
Nahoru Odpovědět
29.5.2015 22:47
2 + 2 = 5 for extremely large values of 2
Avatar
Jan Vargovský
Tvůrce
Avatar
Odpovídá na vgl
Jan Vargovský:30.5.2015 11:28

Pekne reseni z uvy, pak pošlu inspiraci.

 
Nahoru Odpovědět
30.5.2015 11:28
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 4 zpráv z 4.