0455 - Calendar1: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==Cerință== Se citesc 3 numere naturale z1 l1 a1, reprezentând o dată calendaristică corectă, în format zi luna an. Să se afişeze data zilei următoare. ==Date de intrare== Programul citește de la tastatură numerele z1 l1 a1. ==Date de ieșire== Programul afișează pe ecran numerele z2 l2 a2, separate prin exact un spaţiu, reprezentând data zilei următoare. ==Restricții de precizări== *data calendaristică citită corect ==Exemplul 1== ;Intrare :28 :2 :2...
 
 
(5 intermediate revisions by 2 users not shown)
Line 1: Line 1:


==Cerință==
==Cerință==
Se citesc 3 numere naturale z1 l1 a1, 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 z1 l1 a1.
Programul citește de la tastatură numerele: '''zi luna an'''.
==Date de ieșire==
==Date de ieșire==
Programul afișează pe ecran numerele z2 l2 a2, separate prin exact un spaţiu, reprezentând data zilei următoare.
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 28: Line 29:
:2000
:2000
==Rezolvare==
==Rezolvare==
===Rezolvare ver. 1===
<syntaxhighlight lang="python" line="1" start="1">
<syntaxhighlight lang="python" line="1" start="1">
import datetime
def validare(zi, luna, an):
zi = int(input("Introduceti ziua: "))
    return zi.isdigit() and 1 <= int(zi) <= 31 and luna.isdigit() and 1 <= int(luna) <= 12 and an.isdigit()
luna = int(input("Introduceti luna: "))
 
an = int(input("Introduceti anul: "))
 
data = datetime.datetime(an, luna, zi)
def data_zilei_urmatoare(zi, luna, an): #calculăm data zilei următoare
data_urmatoare = data + datetime.timedelta(days=1)
    if (an % 4 == 0 and an % 100 != 0) or (an % 400 == 0): #verificăm dacă anul este bisect sau nu
print("Data urmatoare este:", data_urmatoare.strftime("%d/%m/%Y"))
        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>
</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
  1. 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>