0949 - Calendar 3

From Bitnami MediaWiki
Revision as of 11:28, 27 December 2023 by Mesarosdenisa (talk | contribs)

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>