4211 - ElimZTRec: Difference between revisions

From Bitnami MediaWiki
Cata (talk | contribs)
Pagină nouă: == Cerința == Scrieți funcția recursivă ElimZTRec care primind ca parametru un număr natural nenul n, returnează numărul obținut prin eliminarea eventualelor cifre de 0 de la sfârșitul lui n. == Restricții și precizări == * 1 ≤ n ≤ 2.147.000.000 * Numele funcției este ElimZTRec. * Se recomandă utilizarea recursivității în rezolvarea problemei. == Exemplu == ElimZTRec(240) = 24, ElimZTRec(123) = 123 și ElimZTRec(20500) = 205. == Important == Soluția p...
 
Cata (talk | contribs)
No edit summary
 
(2 intermediate revisions by the same user not shown)
Line 6: Line 6:
* Numele funcției este ElimZTRec.
* Numele funcției este ElimZTRec.
* Se recomandă utilizarea recursivității în rezolvarea problemei.
* Se recomandă utilizarea recursivității în rezolvarea problemei.
== Exemplu ==
ElimZTRec(240) = 24, ElimZTRec(123) = 123 și ElimZTRec(20500) = 205.


== Important ==
==Date de intrare==
Soluția propusă va conține doar funcția cerută. Introducerea în soluție a altor instrucțiuni poate duce la erori de compilare sau de execuție, care vor duce la depunctarea soluției.
Programul citește de la tastatură numărul n.


==Date de ieșire==
Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte.", apoi pe un rând nou un mesaj dat în funcție de valoarea returnată de funcția ElimZTRec, reprezentând numărul cerut. În cazul în care numărul introdus depășește limitele date, se va afișa "Numarul introdus nu este valid.", iar dacă numărul introdus nu este întreg, se va afișa "Nu ati introdus un numar intreg."
==Exemplu 1==
; Intrare
: Introduceti un numar natural intre 1 si 2147000000: 240
; Ieșire
: Datele introduse sunt valide.
: Numarul fara zerouri la final este: 24
==Exemplu 2==
; Intrare
: Introduceti un numar natural intre 1 si 2147000000: 123
; Ieșire
: Datele introduse sunt valide.
: Numarul fara zerouri la final este: 123
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
def validate_n(n):
    if isinstance(n, int) and n >= 1 and n <= 2147000000:
        return True
    else:
        return False
def ElimZTRec(n):
def ElimZTRec(n):
     if n % 10 != 0:
     if n % 10 != 0:
Line 19: Line 38:
     else:
     else:
         return ElimZTRec(n // 10)
         return ElimZTRec(n // 10)
if __name__ == "__main__":
    n = input("Introduceti un numar natural intre 1 si 2147000000: ")
    try:
        n = int(n)
        if validate_n(n):
            result = ElimZTRec(n)
            print("Datele introduse sunt valide.")
            print(f"Numarul fara zerouri la final este: {result}")
        else:
            print("Numarul introdus nu este valid.")
    except ValueError:
        print("Nu ati introdus un numar natural.")
</syntaxhighlight>
</syntaxhighlight>
==Explicație==
Funcția validate_n(n) verifică dacă valoarea argumentului n este un număr întreg pozitiv între 1 și 2147000000 (valoarea maximă pe 32 de biți). Dacă această condiție este îndeplinită, funcția returnează True, altfel returnează False.
Funcția ElimZTRec(n) primește un număr natural n și elimină zerourile de la sfârșitul acestuia recursiv, până când ultima cifră a numărului este diferită de 0. În cazul în care ultima cifră a numărului este diferită de 0, funcția returnează valoarea inițială a numărului, altfel apelează funcția recursiv cu n împărțit la 10.
În secțiunea if __name__ == "__main__":, programul primește de la utilizator un număr natural, îl validează folosind funcția validate_n(n), apelează funcția ElimZTRec(n) pentru a elimina zerourile de la sfârșitul numărului și afișează rezultatul. Dacă numărul introdus de utilizator nu este valid, se afișează un mesaj corespunzător.

Latest revision as of 07:17, 3 May 2023

Cerința[edit | edit source]

Scrieți funcția recursivă ElimZTRec care primind ca parametru un număr natural nenul n, returnează numărul obținut prin eliminarea eventualelor cifre de 0 de la sfârșitul lui n.

Restricții și precizări[edit | edit source]

  • 1 ≤ n ≤ 2.147.000.000
  • Numele funcției este ElimZTRec.
  • Se recomandă utilizarea recursivității în rezolvarea problemei.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul n.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele introduse sunt corecte.", apoi pe un rând nou un mesaj dat în funcție de valoarea returnată de funcția ElimZTRec, reprezentând numărul cerut. În cazul în care numărul introdus depășește limitele date, se va afișa "Numarul introdus nu este valid.", iar dacă numărul introdus nu este întreg, se va afișa "Nu ati introdus un numar intreg."

Exemplu 1[edit | edit source]

Intrare
Introduceti un numar natural intre 1 si 2147000000: 240
Ieșire
Datele introduse sunt valide.
Numarul fara zerouri la final este: 24

Exemplu 2[edit | edit source]

Intrare
Introduceti un numar natural intre 1 si 2147000000: 123
Ieșire
Datele introduse sunt valide.
Numarul fara zerouri la final este: 123

Rezolvare[edit | edit source]

<syntaxhighlight lang="python"> def validate_n(n):

   if isinstance(n, int) and n >= 1 and n <= 2147000000:
       return True
   else:
       return False

def ElimZTRec(n):

   if n % 10 != 0:
       return n
   else:
       return ElimZTRec(n // 10)

if __name__ == "__main__":

   n = input("Introduceti un numar natural intre 1 si 2147000000: ")
   try:
       n = int(n)
       if validate_n(n):
           result = ElimZTRec(n)
           print("Datele introduse sunt valide.")
           print(f"Numarul fara zerouri la final este: {result}")
       else:
           print("Numarul introdus nu este valid.")
   except ValueError:
       print("Nu ati introdus un numar natural.")

</syntaxhighlight>

Explicație[edit | edit source]

Funcția validate_n(n) verifică dacă valoarea argumentului n este un număr întreg pozitiv între 1 și 2147000000 (valoarea maximă pe 32 de biți). Dacă această condiție este îndeplinită, funcția returnează True, altfel returnează False.

Funcția ElimZTRec(n) primește un număr natural n și elimină zerourile de la sfârșitul acestuia recursiv, până când ultima cifră a numărului este diferită de 0. În cazul în care ultima cifră a numărului este diferită de 0, funcția returnează valoarea inițială a numărului, altfel apelează funcția recursiv cu n împărțit la 10.

În secțiunea if __name__ == "__main__":, programul primește de la utilizator un număr natural, îl validează folosind funcția validate_n(n), apelează funcția ElimZTRec(n) pentru a elimina zerourile de la sfârșitul numărului și afișează rezultatul. Dacă numărul introdus de utilizator nu este valid, se afișează un mesaj corespunzător.