0949 - Calendar 3
Cerinta
Dându-se o dată calendaristică și un număr nr de zile, să se determine care este data aflată la o diferență de nr de zile.
Date de intrare
Programul citește de la tastatură 3 numere naturale Z, L și A, reprezentând ziua, luna si anul curent, iar pe al doilea rând numărul nr de zile.
Date de iesire
Programul va afișa pe ecran 3 numere naturale ZI, LUNA, AN reprezentând data cerută.
Restrictii si precizari
- -100.000 ⩽ nr ⩽ 100000
- Datele calendaristice din fișierul de intrare sunt între 1 ianuarie 1900 și 31 decembrie 2100
- Nu se vor fi date calendaristice invalide precum 29 februarie 2015 sau 31 noiembrie 1980
- Dacă nr este negativ, data cerută se afla înaintea cele curente.
Exemplul 1
- Intrare
- 6 1 2015
- 15
- Iesire
- Datele introduse corespund restrictiilor impuse
- 21 1 2015
Exemplul 2
- Intrare
- 29 2 2015
- 25
- Iesire
- Datele introduse nu corespund restrictiilor impuse
Rezolvare
<syntaxhighlight lang="python3" line="1"> def adauga_zile(Z, L, A, nr_zile):
# Dicționar cu numărul de zile în fiecare lună zile_luna = { 1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31 }
# Adăugăm numărul de zile Z += nr_zile
while Z > zile_luna[L]: Z -= zile_luna[L] L += 1
if L > 12: L = 1 A += 1
return Z, L, A
def main():
# Citirea datelor de intrare Z, L, A = map(int, input("Introduceti data (Z L A): ").split()) nr_zile = int(input("Introduceti numarul de zile: "))
# Calcularea și afișarea datei la diferența de zile specificată rezultat = adauga_zile(Z, L, A, nr_zile) print(f"{rezultat[0]} {rezultat[1]} {rezultat[2]}")
if __name__ == "__main__":
main()
</syntaxhighlight>