0454 - Calendar: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==Cerință== Se citesc 3 numere naturale z l a. Să se decidă dacă reprezintă o dată calendaristică corectă, în format zi luna an. ==Date de intrare== Programul citește de la tastatură numerele z l a. ==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 ⩽ a ⩽ 2500 *0 ⩽ z, l ⩽ 100 ==Exemplul 1== ;Intrare :29...
Tag: visualeditor
 
 
(8 intermediate revisions by 2 users not shown)
Line 1: Line 1:


==Cerință==
==Cerință==
Se citesc 3 numere naturale z l a. Să se decidă dacă reprezintă o dată calendaristică corectă, în format zi luna an.
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==
==Date de intrare==
Programul citește de la tastatură numerele z l a.
Programul citește de la tastatură numerele '''zi luna an'''.
 
==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 ⩽ a ⩽ 2500
*1850 ⩽ '''an''' ⩽ 2500
 
*0 ⩽ '''zi, luna''' ⩽ 100


*0 ⩽ z, l ⩽ 100
==Exemplul 1==
==Exemplul 1==
;Intrare
;Intrare
Line 39: Line 43:
:DA
:DA
==Rezolvare==
==Rezolvare==
=== Rezolvare ver. 1 ===
<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(): #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:
     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>

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>