Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 18. 10. 2010 17:45 — Editoval PeterSheldon (18. 10. 2010 17:55)

PeterSheldon
Příspěvky: 128
Reputace:   
 

rozdíl dvou datumů

Chtěl bych se Vás zeptat, jak byste řešili úlohu, kde byste měli určit rozdíl dvou datumů. Představte si, že vám někdo zadá: 25.1.2010 a 18.10.2010 a máte určit o kolik dní se od sebe tyto dva datumy liší. Zajímalo by mě algoritmické řešení (tzn. bez použití nějaké funkce, která to celé udělá za Vás).. napadá mě jen takové krkolomné, kde by se to jen hemžilo podmínkama If / switch.. Děkuju za odpověď... Jako řešení mi postačí napsat, jakým způsobem byste to řešili - co si spočítat, na co si to převést apod.

Offline

  • (téma jako vyřešené označil(a) PeterSheldon)

#2 18. 10. 2010 18:08

Fauſt
Příspěvky: 36
Reputace:   
 

Re: rozdíl dvou datumů

Samozřejmě, že se to bude hemžit ifama a switchema, je to dost netriviální úloha.  Budeš muset počítat s přestupnými roky, různou délkou měsíců a vůbec...  Obvykle se pracuje s formátem "počet sekund od pevného data", přičemž převody z a do lidské reprezentace jsou náročné.

Už to bylo implementováno tisíckrát, takže stačí hledat a najdeš spoustu ukázkových implementací, třeba v C++: http://www.xmission.com/~tknarr/code/Date.html

Offline

 

#3 18. 10. 2010 18:30

PeterSheldon
Příspěvky: 128
Reputace:   
 

Re: rozdíl dvou datumů

↑ Fauſt:

jj mám pocit, že nám ale použití jakékoliv funkce zakazují :(

Offline

 

#4 19. 10. 2010 10:57

PeterSheldon
Příspěvky: 128
Reputace:   
 

Re: rozdíl dvou datumů

jaksi si nejsem stále jistý jak udělat takový přepočet mezi jednotlivými daty ... prý by to mělo jít právě i bez použití cyklů, ale tím pádem bych se ztratil v podmínkách, napadá z vás někoho jak to udělat?

Offline

 

#5 19. 10. 2010 12:06

ondrouchd
Příspěvky: 43
Reputace:   
 

Re: rozdíl dvou datumů

A v jakem programovacim jazyku ? V ramci jakeho predmetu vam to zadali ?

Offline

 

#6 19. 10. 2010 13:40

PeterSheldon
Příspěvky: 128
Reputace:   
 

Re: rozdíl dvou datumů

↑ ondrouchd:

algoritmizace.. na tom celkem nesejde.. jde o to, že máme počítat i s tím, že existovali dva druhy kalendářů .. Juliánský a Gregoriánský . Juliánský platil do 6.1.1548 a pote 7.1. - 16.1.1548 nejsou vůbec zaznamenány v žádném kalendáři kvůli přechodu na Gregoriánský. Metody na zjištění přestupných roků v juliánském a gregoriánském kalendáři mám hotové, to samé validaci dat.. Jde mi právě o tu problematickou část - jak efektivně zjistit ALGORITMEM kolik dní uběhlo mezi dvouma datumama (věstavěné funkce v jazyce C, jsou téměř na každé škole zakázané, takže vše musím vyřešit algoritmicky a nesmím použít žádnou věstavěnou funkci, která by mi mohla pomáhat) ... Jenomže, ono se ukázalo, že to nebude taková legrace jak to na první pohled vypadá, cyklama to lze řešit taky , ale jednak není to uplně jednoduchý a zároveň mi to srazí bodové ohodnocení, protože profesor předpokládá řešení bez použití cyklu .. Jestli to lze vyřešit jen pomocí podmínek, tak to bude opravdu humus:( Jen mě zatím pořád nenapadá, jak si jednotlivé datumy mám spočítat, případně na co převést , aby se mi to dobře počítalo

Offline

 

#7 19. 10. 2010 16:30

pietro
Příspěvky: 4792
Reputace:   187 
 

Re: rozdíl dvou datumů

A poriadnu dávku trpezlivosti prajem... kontrolovať sa dá aj tu.. http://www.wolframalpha.com/input/?i=da … 2-1.3.1983

Offline

 

#8 20. 10. 2010 19:45

PeterSheldon
Příspěvky: 128
Reputace:   
 

Re: rozdíl dvou datumů

↑ pietro:

diky no ,ale já čekal , že je tu opravdový programátor co dá nějakej hint a kdežto žádné odpovědi se mi nedostalo:(

Offline

 

#9 20. 10. 2010 22:11 — Editoval pizet (25. 10. 2010 16:04)

pizet
Místo: Levice/Praha
Příspěvky: 459
Reputace:   11 
 

Re: rozdíl dvou datumů

↑ PeterSheldon:
Ja som toto robil... Môžem ti povedať môj postup, možno existuje aj niečo lepšie...
Však ak dostaneš dva dátumy, musíš sa postarať o 3 veci:
dajme tomu, že si dostal dátumy 12.3.1996 a 23.4.2013
1) spočítaš koľko dní je od 1.1.1996 do 1.1.2013
- musíš pritom brať do úvahy, že priestupné roky sú všetky roky deliteľné číslom 4, nie sú to ale celé storočia( 1700, 1900, ...) ale sú to celé storočia, ktoré sú deliteľné číslom 400( 1600, 2000). Týmito kritériami sa to trocha skomplikuje ale dá sa to.
2) spočítaš, koľko dní je od 1.1.1996 do 12.3.1996( pamätaj opäť na priestupný rok) a tieto dni potom odpočítaš od celkových dní, ktoré si napočítal v bode 1).
3) spočítaš, koľko dní je od 1.1.2013 do 23.4.2013( pamätaj opäť na priestupný rok) a tieto dni potom pripočítaš k celkovým dňom, ktoré si napočítal v bode 1).
Tým pádom máš potom určite počet všetkých dní medzi danými dvoma dátumami.

Odporúčam si vopred nadeklarovať pole s mesiacmi:

Code:

int mesiace [13] = {0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
struct datum { // datova struktura na uschovanie datumov
    int den;
    int mesiac;
    int rok;
} datum1, datum2;

Potom je to už easy... Zdrojak som mal tak na cca 100 riadkov.


Do you follow my way? Or you just see a black stain swimming in the Milky Way ...
KSP je určený pre študentov základných a stredných škôl, ktorí majú záujem naučiť sa niečo z oblasti algoritmov, logických úloh, programovania a informatiky.

Offline

 

#10 20. 10. 2010 22:31

PeterSheldon
Příspěvky: 128
Reputace:   
 

Re: rozdíl dvou datumů

↑ pizet:

diky moc, to mi bohatě stačí... vážím si tvé odpovědi

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson