Počet dnı́ od začátku roku
Zadání:
Vytvořte program, ve kterém uživatel zadá datum (den, měsíc, rok), pro nějž program zjistí, kolik uběhlo dní od začátku roku.
Upozornění: Neřešte chybné zadání dne, měsíce nebo roku. Ale nezapomeňte na přestupný rok.
Vstup programu: den, měsíc a rok
Výstup programu: počet dní od začátku roku
Rozbor:
Přiklad budeme řešit tak, že nejdříve nebudeme počítat s přestupným rokem a zjistíme, kolik dní uběhlo od začátku roku. Poté si ověříme, zda se jedná o přestupný rok. Pokud ano, musíme k počtu dnů přičíst 1.
Ověřování, zda se jedná o přestupný rok, bude probíhat následujícím způsobem.
1. Pokud je rok dělitelný 4, nevíme, zda je přestupný.
I. A pokud je zároveň dělitelný 100, stále nevíme, zda je přestupný.
a) Ale pokud je ještě k tomu dělitelný 400, tak už víme, že přestupný je.
b) Pokud není dělitelný 400, není přestupný.
II. Pokud není zároveň dělitelný 100, je přestupný.
2. Pokud rok není dělitelný 4, víme, že není přestupný.
Upozornění: Nezapomeňte, že přestupný rok se nám projevuje na konci měsíce únor. Tudíž přestupný rok vůbec neřešíme, pokud se jedná o leden nebo únor.
Proměnné použité v programu:
D ... zadaný den [Integer]
M ... zadaný měsíc [Integer]
R ... zadaný rok [Integer]
X ... počet dní od začátku roku [Integer]
Logické sestavení programu:
Nejdříve musíme načíst hodnoty D, M, R. Dále musíme rozhodnout, o který měsíc se jedná (1-12), a podle toho uložit do X součet všech dní za předchozí měsíce (zatím neřešíme přestupný rok) a k tomu přičíst počet dní v současném měsíci D. Nyní musíme udělat několik rozhodnutí podle kterých poznáme, zda se jedná o přestupný rok. Nejdříve tedy musíme rozhodnout, zda je rok dělitelný 4 (jestli je zbytek po dělení 4 nulový) a zároveň, zda je měsíc větší než 2 (únor).
1. Pokud je R dělitelné 4 a zároveň M je větší než 2, musíme udělat rozhodnutí, zda je rok dělitelný 100.
I. Pokud je R dělitelné 100, musíme udělat rozhodnutí, zda je rok dělitelný 400.
a) Pokud je R dělitelné 400, musíme k X přičíst 1.
b) Pokud R není dělitelné 400, neděláme nic.
II. Pokud R není dělitelné 100, musíme k X přičíst 1.
2. Pokud R není dělitelné 4 nebo M není větší než 2, neděláme nic.
Vypíšeme počet dní od začátku roku X.