4211 - ElimZTRec: Difference between revisions
No edit summary |
No edit summary |
||
Line 13: | Line 13: | ||
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." | 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 == | ==Exemplu 1== | ||
; Intrare | ; Intrare | ||
: Introduceti un numar natural intre 1 si 2147000000: 240 | : Introduceti un numar natural intre 1 si 2147000000: 240 | ||
Line 19: | Line 19: | ||
: Datele introduse sunt valide. | : Datele introduse sunt valide. | ||
: Numarul fara zerouri la final este: 24 | : Numarul fara zerouri la final este: 24 | ||
==Exemplu 2== | |||
; Intrare | ; Intrare | ||
: Introduceti un numar natural intre 1 si 2147000000: 123 | : Introduceti un numar natural intre 1 si 2147000000: 123 |
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.