4211 - ElimZTRec

From Bitnami MediaWiki
Revision as of 09:47, 6 April 2023 by Cata (talk | contribs)

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.

Explicație

Funcția ElimZTRec primește ca parametru un număr natural n și elimină zerourile de la finalul acestuia. Dacă ultima cifră a lui n este diferită de zero, funcția returnează n. În caz contrar, se apelează funcția recursiv cu n împărțit la 10.

Funcția de validare validate_n verifică dacă n este un număr natural între 1 și 2.147.000.000 (inclusiv) folosind operatorii de comparație >= și <=.

Funcția main primește un număr natural n de la tastatură, verifică dacă acesta este valid folosind funcția validate_n, elimină zerourile de la finalul lui n folosind funcția ElimZTRec și afișează rezultatul.

Rezolvare

<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)

def main():

   n = input("Introduceti un numar natural intre 1 si 2147000000: ")
   try:
       n = int(n)
       if validate_n(n):
           result = ElimZTRec(n)
           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>