0949 - Calendar 3: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == 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 ≤ n...
 
No edit summary
Line 5: Line 5:
== Date de intrare ==
== 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.
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 ==
== Date de iesire ==


Programul va afișa pe ecran 3 numere naturale ZI, LUNA, AN reprezentând data cerută.
Programul va afișa pe ecran 3 numere naturale '''ZI, LUNA, AN''' reprezentând data cerută.


== Restrictii si precizari ==
== Restrictii si precizari ==


*-100.000 nr 100000
*-100.000 ⩽ nr ⩽ 100000
*Datele calendaristice din fișierul de intrare sunt între 1 ianuarie 1900 și 31 decembrie 2100
*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
*Nu se vor fi date calendaristice invalide precum 29 februarie 2015 sau 31 noiembrie 1980
Line 23: Line 23:
:15
:15
;Iesire
;Iesire
;Datele introduse corespund restrictiilor impuse
:Datele introduse corespund restrictiilor impuse
:21 1 2015
:21 1 2015


Line 31: Line 31:
:25
:25
;Iesire
;Iesire
;Datele introduse nu corespund restrictiilor impuse
:Datele introduse nu corespund restrictiilor impuse





Revision as of 11:28, 27 December 2023

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>