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 IZP a IUS, 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).
Vytvorte program, který vypocte pocet dnu mezi dvema kalendárními daty. Program musí zohlednit 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í.
Standardní systémové funkce pro práci s kalendárními daty lze pouzít pouze pro overení správnosti výsledku.
Program precte ze standardního vstupu jeden rádek, na kterém bude textový retezec ve formátu dd.mm.rrrr-dd.mm.rrrr.
12.01.0823-06.09.1981
Program na výstup vytiskne jediný rádek obsahující pocet dnu mezi zadanými daty.
423188
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.