Vzorový projekt - Rozdíl kalendárních dat

[  Jak vzorové resení pouzívat  |  Zadání úlohy  |  Formát vstupních dat  |  Formát výstupních dat  ]

Jak vzorové resení pouzívat

Toto je vzorove vyresená úloha s obtízností odpovídající zhruba 1. az 2. projektu predmetu Základy programování. Tento projekt neodevzdávejte! Tento projekt je ukázkou pomerne jednoduchého reálného programu. Pokud s programováním zacínáte, muze být zkoumání tohoto kódu pro vás uzitecným cvicením. Verím, ze prozkoumáním této úlohy získáte více, nez ztrácením casu u trivialit typu Hello world, kterých ostatne na internetu najdete obrovská kvanta.

Na tomto projektu si máte moznost prohlédnout nejenom základní konstrukce jazyka C, ale také pouzití programu make pro preklad a pro správu projektu. Naleznete zde i testovací skript v jazyku BASH, kterým se muzete inspirovat pri testování vlastních programu. Nebojte se tento program ruzne upravovat a rozsirovat. Rozhodne si jeho funkcnost prohlédnete ve vhodném ladícím programu (v Makefile je pripraveno pravidlo debug, takze zkuste v adresári napsat make debug a spustí se debugger ddd). Pouhým pasivním zkoumáním kódu se toho moc nenaucíte.

K projektu je prilozena také vzorová dokumentace. Pokud absolvujete kurzy IZPIUS, budeme po vás takovou dokumentaci k projektum pozadovat. Podobnou technickou zprávu od vás muze vyzadovat zamestnavatel, pokud se budete programováním zivit. Rozhodne budete nuceni podobný text nekolikrát napsat behem studia na vysoké skole, kdyz budete resit ruzné semestrální projekty. Tato technická zpráva je napsána v LaTeXu, ale mela by stejnou strukturu i kdyby byla psána v nejakém grafickém textovém procesoru (OOWrite, Word, ...).

V tomto projektu je zadáním dostatecne presne specifikováno, jak se má program ovládat, proto se prilozená dokumentace tímto problémem prílis nezabývá. Pokud u nejakého projektu má v tomto smeru autor volnou ruku, predpokládá se, ze k programu dodá textový soubor s popisem ovládání a instalace a v hrubých rysech to popíse i v technické zpráve.

Poznámka pro studenty: Pri psaní vlastních projektu a technických zpráv se muzete tímto projektem inspirovat, ale vzdy se snazte vymýslet vlastní resení a problémy popisovat vlastními slovy. Zvláste u technické zprávy je vhodné se inspirovat pouze strukturou dokumentu a neopisovat z ní vety a odstavce (snadno se to pozná a usvedcí vás to z nedostatku vlastních nápadu).

Soubory ke stazení


Zadání úlohy

Vytvorte program, který vypocte pocet dnu mezi dvema kalendárními daty. Program musí zohlednit prestupné roky.

Prestupné roky

Prestupný rok je kazdý rok, jehoz letopocet je násobkem císla 4, s výjimkou celých století, která prestupná nejsou. I zde ale platí jeste jedna výjimka: roky, které jsou násobkem císla 400 prestupné jsou, ackoliv to jsou také celá století.

Príklad

Poznámka

Standardní systémové funkce pro práci s kalendárními daty lze pouzít pouze pro overení správnosti výsledku.

Formát vstupních dat

Program precte ze standardního vstupu jeden rádek, na kterém bude textový retezec ve formátu dd.mm.rrrr-dd.mm.rrrr.

Príklad vstupních dat

12.01.0823-06.09.1981

Formát výstupních dat

Program na výstup vytiskne jediný rádek obsahující pocet dnu mezi zadanými daty.

Príklad výstupních dat

423188

Pomucka pro ladení

Testovací data muzete mít v souboru a do programu je presmerovat. Bude to fungovat stejne, jako kdybyste je na standardní vstup psali rucne.

$ proj2 < data.txt

V Linuxu v shellu Bash to jde i takto:

$ proj2 <<< 12.01.0823-06.09.1981

Blíze viz info stránka programu bash.

Navrhnete vhodnou mnozinu testovacích dat, která otestují vsechny moznosti, pri nichz by se mohla projevit chyba. Zkousejte dávat na vstup syntakticky chybný vstup (15.dubna.1758), logicky chybný vstup (30.2.2001), dále otestujte data, která obsahují a neobsahují prestupný rok atd.


Autor: David Martinek. Poslední modifikace: 12. February 2009. Pokud v tomto dokumentu narazíte na chybu, dejte mi prosím vedet.