Készítsünk öröknaptár programot az alábbi algoritmus alapján,
amely bármely megadott dátumról kiírja, hogy milyen napra esett/esik!
Évszázad fix napok (ezek 4 évszázadonként ismétlődnek):
1400 - 1499: Péntek
1500 - 1599: Szerda
1600 - 1699: Kedd
1700 - 1799: Vasárnap
1800 - 1899: Péntek
1900 - 1999: Szerda
2000 - 2099: Kedd
2100 - 2199: Vasárnap
Napok számokban:
Vasárnap = 0
Hétfő = 1
Kedd = 2
Szerda = 3
Csütörtök = 4
Péntek = 5
Szombat = 6
Tegyük fel, hogy a dátum
1970 október 15
1 lépés:
számoljuk ki, hogy a 12 hányszor van meg az évszám utolsó két számjegyében
(70 esetében ez 5, mert 5*12 = 60)
2 lépés:
Mennyi a különbség az évszám ez aktuális 12 többszörös között?
(70-60 = 10)
3 lépés:
Hányszor van meg a 4 a 2 es lépésnél kapott számban?
(10 ben a 4 2 szer)
4 lépés:
Mi az évszázad fix napja?
(1900 nak szerda, ami 3 as)
5 lépés:
Adjuk össze az így kapott számokat!
(5 + 10 + 2 + 3 = 20)
6 lépés:
Vonjuk ki a 7nek azt a legnagyobb többszörösét a számból, ami még kisebb, mint a szám!
(20-2*7 = 6)
Minden évben van néhány dátum, amely ugyanarra a napra esik, ezek
4/4, 6/6, 8/8, 10/10
Az előző algoritmussal megkapjuk azt a napot, amely különböző dátumokon ismétlődik az évben, ami szombat lesz 1970ben.
Vagyis a következő dátumok mind szombatra estek:
4/4 6/6 8/8 10/10
Megnézzük, hogy a vizsgálandó dátum melyik naphoz van a legközelebb,
s ezalapján kiszámoljuk, hogy milyen nap is volt.
Október 10 szombat volt, akkor 15 az 10. étől 5 napra van, vagyis 6+5=11 nek a 7 el való osztási maradéka lesz, ami 4, vagyis csütörtök
Ítjunk egy C++ programot, amely beolvas egy dátumot (évszám, hónap, nap formában) majd kiírja a napot, amire esett.
A fenti példában
1970
10
15
lenne a bemenet, s
csutortok
ot irna ki