0455 - Calendar1: Difference between revisions
Am modificat codul. |
Vardai Erwin (talk | contribs) |
||
(4 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
==Cerință== | ==Cerință== | ||
Se citesc 3 numere naturale ziua luna anul, reprezentând o dată calendaristică corectă, în format zi luna an. Să se afişeze data zilei următoare. | Se citesc 3 numere naturale ziua luna anul, reprezentând o dată calendaristică corectă, în format '''zi luna an'''. Să se afişeze data zilei următoare. | ||
==Date de intrare== | ==Date de intrare== | ||
Programul citește de la tastatură numerele | Programul citește de la tastatură numerele: '''zi luna an'''. | ||
==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 numerele ziua luna anul, separate prin exact un spaţiu, reprezentând data zilei următoare. Î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== | ||
*data calendaristică citită corect | *data calendaristică citită corect | ||
Line 27: | Line 28: | ||
:2000 | :2000 | ||
==Rezolvare ver. 1== | ==Rezolvare== | ||
===Rezolvare ver. 1=== | |||
<syntaxhighlight lang="python" line="1" start="1"> | <syntaxhighlight lang="python" line="1" start="1"> | ||
def validare(zi, luna, an): | |||
return zi.isdigit() and 1 <= int(zi) <= 31 and luna.isdigit() and 1 <= int(luna) <= 12 and an.isdigit() | |||
if (an % 4 == 0 and an % 100 != 0) or (an % 400 == 0): | def data_zilei_urmatoare(zi, luna, an): #calculăm data zilei următoare | ||
if (an % 4 == 0 and an % 100 != 0) or (an % 400 == 0): #verificăm dacă anul este bisect sau nu | |||
bisect = True | bisect = True | ||
else: | else: | ||
bisect = False | bisect = False | ||
zile_luna = { | #definim lunile și din câte zile este formată | ||
zile_luna = { | |||
1: 31, | 1: 31, | ||
2: 29 if bisect else 28, | 2: 29 if bisect else 28, | ||
Line 52: | Line 57: | ||
} | } | ||
if zi == zile_luna[luna]: | if zi == zile_luna[luna]: #verificăm ultima zi a lunii, urmatoarea lună este = luna curentă + 1 la fel cu anul următor și cu zilele | ||
ziua_urmatoare = 1 | ziua_urmatoare = 1 | ||
if luna == 12: | if luna == 12: | ||
luna_urmatoare = 1 | luna_urmatoare = 1 | ||
anul_urmator = an + 1 | anul_urmator = an + 1 | ||
else: | else: | ||
Line 64: | Line 69: | ||
luna_urmatoare = luna | luna_urmatoare = luna | ||
anul_urmator = an | anul_urmator = an | ||
return ziua_urmatoare, luna_urmatoare, anul_urmator | return ziua_urmatoare, luna_urmatoare, anul_urmator | ||
if __name__ == '__main__': | |||
zi = input("Introduceți ziua: ") | |||
luna = input("Introduceți luna: ") | |||
an = input("Introduceți anul: ") | |||
if validare(zi, luna, an): | |||
zi, luna, an = int(zi), int(luna), int(an) | |||
print("Datele introduse corespund restricțiilor impuse.") | |||
ziua_urmatoare, luna_urmatoare, anul_urmator = data_zilei_urmatoare(zi, luna, an) | |||
print(ziua_urmatoare, luna_urmatoare, anul_urmator, sep="\n") | |||
else: | |||
print("Datele introduse nu corespund restricțiilor impuse.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 18:20, 22 April 2023
Cerință[edit | edit source]
Se citesc 3 numere naturale ziua luna anul, reprezentând o dată calendaristică corectă, în format zi luna an. Să se afişeze data zilei următoare.
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 numerele ziua luna anul, separate prin exact un spaţiu, reprezentând data zilei următoare. Î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]
- data calendaristică citită corect
Exemplul 1[edit | edit source]
- Intrare
- 28
- 2
- 2000
- Ieșire
- Datele introduse corespund restricțiilor impuse.
- 29
- 2
- 2000
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line="1" start="1"> def validare(zi, luna, an):
return zi.isdigit() and 1 <= int(zi) <= 31 and luna.isdigit() and 1 <= int(luna) <= 12 and an.isdigit()
def data_zilei_urmatoare(zi, luna, an): #calculăm data zilei următoare
if (an % 4 == 0 and an % 100 != 0) or (an % 400 == 0): #verificăm dacă anul este bisect sau nu bisect = True else: bisect = False
- definim lunile și din câte zile este formată
zile_luna = { 1: 31, 2: 29 if bisect else 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31 }
if zi == zile_luna[luna]: #verificăm ultima zi a lunii, urmatoarea lună este = luna curentă + 1 la fel cu anul următor și cu zilele ziua_urmatoare = 1 if luna == 12: luna_urmatoare = 1 anul_urmator = an + 1 else: luna_urmatoare = luna + 1 anul_urmator = an else: ziua_urmatoare = zi + 1 luna_urmatoare = luna anul_urmator = an
return ziua_urmatoare, luna_urmatoare, anul_urmator
if __name__ == '__main__':
zi = input("Introduceți ziua: ") luna = input("Introduceți luna: ") an = input("Introduceți anul: ")
if validare(zi, luna, an): zi, luna, an = int(zi), int(luna), int(an) print("Datele introduse corespund restricțiilor impuse.") ziua_urmatoare, luna_urmatoare, anul_urmator = data_zilei_urmatoare(zi, luna, an) print(ziua_urmatoare, luna_urmatoare, anul_urmator, sep="\n") else: print("Datele introduse nu corespund restricțiilor impuse.")
</syntaxhighlight>