0454 - Calendar: Difference between revisions

From Bitnami MediaWiki
mNo edit summary
Tag: visualeditor
 
Line 7: Line 7:


==Date de ieșire==
==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.
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul afișează pe ecran mesajul DA, dacă cele trei numere formează o dată calendaristică corectă, respectiv NU în caz contrar. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."
 
==Restricții de precizări==
==Restricții de precizări==
*1850 ⩽ '''an''' ⩽ 2500
*1850 ⩽ '''an''' ⩽ 2500

Latest revision as of 18:19, 22 April 2023

Cerință[edit]

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[edit]

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

Date de ieșire[edit]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul afișează pe ecran mesajul DA, dacă cele trei numere formează o dată calendaristică corectă, respectiv NU în caz contrar. În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

Restricții de precizări[edit]

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

Exemplul 1[edit]

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

Exemplul 2[edit]

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

Rezolvare[edit]

Rezolvare ver. 1[edit]

<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>