0454 - Calendar: Difference between revisions
Vardai Erwin (talk | contribs) |
Vardai Erwin (talk | contribs) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 7: | Line 7: | ||
==Date de ieșire== | ==Date de ieșire== | ||
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 | ||
Line 42: | Line 43: | ||
:DA | :DA | ||
==Rezolvare== | ==Rezolvare== | ||
=== Rezolvare ver. 1 === | |||
<syntaxhighlight lang="python" line="1" start="1"> | <syntaxhighlight lang="python" line="1" start="1"> | ||
def | def validare_date(zi, luna, an): | ||
if | return an.isdigit() and 1850 <= int(an) <= 2500 and luna.isdigit() and 0 <= int(luna) <= 100 and zi.isdigit() and 0 <= int(zi) <= 100 | ||
elif | |||
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: | ||
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: | else: | ||
print("Datele de intrare nu corespund restricțiilor impuse.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 18:19, 22 April 2023
Cerință[edit | edit source]
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 | edit source]
Programul citește de la tastatură numerele zi luna an.
Date de ieșire[edit | edit source]
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 | edit source]
- 1850 ⩽ an ⩽ 2500
- 0 ⩽ zi, luna ⩽ 100
Exemplul 1[edit | edit source]
- Intrare
- 29
- 2
- 2000
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- DA
Exemplul 2[edit | edit source]
- Intrare
- 29
- 2
- 2024
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- DA
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<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>