0454 - Calendar: Difference between revisions

From Bitnami MediaWiki
Line 43: Line 43:
==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python" line="1" start="1">
<syntaxhighlight lang="python" line="1" start="1">
def este_data_corecta(z, l, a):
def validare_date(zi, luna, an):
     if l < 1 or l > 12:
    return an.isdigit() and 1850 <= int(an) <= 2500 and luna.isdigit() and 0 <= int(luna) <= 100 and zi.isdigit() and 0 <= int(zi) <= 100
         return False
 
     elif z < 1 or z > zile_in_luna(l, a):
 
         return False
def verifica_data():
     if (luna in [1, 3, 5, 7, 8, 10, 12]) and (zi <= 31):
         print("DA")
    elif (luna in [4, 6, 9, 11]) and (zi <= 30):
        print("DA")
     elif (luna == 2) and (zi <= 29) and (an % 4 == 0) and ((an % 100 != 0) or (an % 400 == 0)):
        print("DA")
    elif (luna == 2) and (zi <= 29) and (an % 4 == 0) and (an % 400 != 0):
         print("NU")
     else:
     else:
         return True
         print("NU")
def zile_in_luna(l, a):
 
    if l == 2:
 
        if a % 4 == 0 and (a % 100 != 0 or a % 400 == 0):
if __name__ == '__main__':
            return 29
    zi = input()
        else:
    luna = input()
            return 28
    an = input()
    elif l in [4, 6, 9, 11]:
 
         return 30
    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:
     else:
         return 31
         print("Datele de intrare nu corespund restricțiilor impuse.")
 
</syntaxhighlight>
</syntaxhighlight>

Revision as of 18:37, 14 March 2023

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

<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():

   if (luna in [1, 3, 5, 7, 8, 10, 12]) and (zi <= 31):
       print("DA")
   elif (luna in [4, 6, 9, 11]) and (zi <= 30):
       print("DA")
   elif (luna == 2) and (zi <= 29) and (an % 4 == 0) and ((an % 100 != 0) or (an % 400 == 0)):
       print("DA")
   elif (luna == 2) and (zi <= 29) and (an % 4 == 0) and (an % 400 != 0):
       print("NU")
   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>