0454 - Calendar

From Bitnami MediaWiki
Revision as of 12:35, 11 April 2023 by Carla Chereji (talk | contribs)

Cerință

Se citesc 3 numere naturale zi luna an. Să se decidă dacă reprezintă o dată calendaristică corectă, în format zi luna an.

Date de intrare

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

Date de ieșire

Programul afișează pe ecran mesajul DA, dacă cele trei numere formează o dată calendaristică corectă, respectiv NU în caz contrar.

Restricții de precizări

  • 1850 ⩽ an ⩽ 2500
  • 0 ⩽ zi, luna ⩽ 100

Exemplul 1

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

Exemplul 2

Intrare
29
2
2024
Ieșire
Datele introduse corespund restricțiilor impuse.
DA

Rezolvare

Rezolvare ver. 1

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

   return an.isdigit() and 1850 <= int(an) <= 2500 and luna.isdigit() and 0 <= int(luna) <= 100 and zi.isdigit() and 0 <= int(zi) <= 100


def verifica_data(): #verificăm daca o anumtă dată este validă

   if (luna in [1, 3, 5, 7, 8, 10, 12]) and (zi <= 31): #ca data să fie validă lunile respective trebuie să aibă 31 de zile
       print("DA") 
   elif (luna in [4, 6, 9, 11]) and (zi <= 30): #ca dată să fie validă, lunile respective trebuie sa aibă doar 30 de zile
       print("DA")
   elif (luna == 2) and (zi <= 29) and (an % 4 == 0) and ((an % 100 != 0) or (an % 400 == 0)): #dacă luna este februarie și anuel este bisect 
       print("DA")
   elif (luna == 2) and (zi <= 29) and (an % 4 == 0) and (an % 400 != 0):
       print("NU") #dacă luna și ziua nu corespund condiților, atunci data este invalidă
   else:
       print("NU")


if __name__ == '__main__':

   zi = input()
   luna = input()
   an = input()
   if validare_date(zi, luna, an):
       zi, luna, an = int(zi), int(luna), int(an)
       print("Datele de intrare corespund restricțiilor impuse.")
       verifica_data()
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")

</syntaxhighlight>