0455 - Calendar1: Difference between revisions

From Bitnami MediaWiki
No edit summary
Line 34: Line 34:




def data_zilei_urmatoare(zi, luna, an):
def data_zilei_urmatoare(zi, luna, an): #calculăm data zilei următoare
     if (an % 4 == 0 and an % 100 != 0) or (an % 400 == 0):
     if (an % 4 == 0 and an % 100 != 0) or (an % 400 == 0): #verificăm dacă anul este bisect sau nu
         bisect = True
         bisect = True
     else:
     else:
         bisect = False
         bisect = False


     zile_luna = {
#definim lunile și din câte zile este formată
     zile_luna = {  
         1: 31,
         1: 31,
         2: 29 if bisect else 28,
         2: 29 if bisect else 28,
Line 55: Line 56:
     }
     }


     if zi == zile_luna[luna]:
     if zi == zile_luna[luna]: #verificăm ultima zi a lunii, urmatoarea lună este = luna curentă + 1 la fel cu anul următor și cu zilele
         ziua_urmatoare = 1
         ziua_urmatoare = 1
         if luna == 12:
         if luna == 12:  
             luna_urmatoare = 1
             luna_urmatoare = 1  
             anul_urmator = an + 1
             anul_urmator = an + 1
         else:
         else:

Revision as of 13:00, 11 April 2023

Cerință

Se citesc 3 numere naturale ziua luna anul, reprezentând o dată calendaristică corectă, în format zi luna an. Să se afişeze data zilei următoare.

Date de intrare

Programul citește de la tastatură numerele: zi luna an.

Date de ieșire

Programul afișează pe ecran numerele ziua luna anul, separate prin exact un spaţiu, reprezentând data zilei următoare.

Restricții de precizări

  • data calendaristică citită corect

Exemplul 1

Intrare
28
2
2000
Ieșire
Datele introduse corespund restricțiilor impuse.
29
2
2000

Rezolvare

Rezolvare ver. 1

<syntaxhighlight lang="python" line="1" start="1"> def validare(zi, luna, an):

   return zi.isdigit() and 1 <= int(zi) <= 31 and luna.isdigit() and 1 <= int(luna) <= 12 and an.isdigit()


def data_zilei_urmatoare(zi, luna, an): #calculăm data zilei următoare

   if (an % 4 == 0 and an % 100 != 0) or (an % 400 == 0): #verificăm dacă anul este bisect sau nu
       bisect = True
   else:
       bisect = False
  1. definim lunile și din câte zile este formată
   zile_luna = { 
       1: 31,
       2: 29 if bisect else 28,
       3: 31,
       4: 30,
       5: 31,
       6: 30,
       7: 31,
       8: 31,
       9: 30,
       10: 31,
       11: 30,
       12: 31
   }
   if zi == zile_luna[luna]: #verificăm ultima zi a lunii, urmatoarea lună este = luna curentă + 1 la fel cu anul următor și cu zilele
       ziua_urmatoare = 1
       if luna == 12: 
           luna_urmatoare = 1 
           anul_urmator = an + 1
       else:
           luna_urmatoare = luna + 1
           anul_urmator = an
   else:
       ziua_urmatoare = zi + 1
       luna_urmatoare = luna
       anul_urmator = an
   return ziua_urmatoare, luna_urmatoare, anul_urmator


if __name__ == '__main__':

   zi = input("Introduceți ziua: ")
   luna = input("Introduceți luna: ")
   an = input("Introduceți anul: ")
   if validare(zi, luna, an):
       zi, luna, an = int(zi), int(luna), int(an)
       print("Datele introduse corespund restricțiilor impuse.")
       ziua_urmatoare, luna_urmatoare, anul_urmator = data_zilei_urmatoare(zi, luna, an)
       print(ziua_urmatoare, luna_urmatoare, anul_urmator, sep="\n")
   else:
       print("Datele introduse nu corespund restricțiilor impuse.")

</syntaxhighlight>