0919 - NrCifreZeroRec1

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

Cerinţa

Să se scrie o funcție Python recursivă care să determine numărul de cifre egale cu zero ale unui număr natural transmis ca parametru și să întoarcă rezultatul prin intermediul unui parametru de ieșire.

Restricţii şi precizări

  • Numele funcției va fi nr_cif_zero
  • Funcția va avea doi parametri: n – reprezentând numărul dat și nr – parametrul prin care se întoarce rezultatul
  • Ordinea parametrilor este n , nr
  • n va fi mai mic decât 2.000.000.000

Explicație

Această funcție numără cifrele "0" din numărul dat "n". Funcția primește un număr "n" și un contor "nr" și returnează numărul de cifre "0" din "n".

Funcția verifică dacă "n" este zero și, dacă este cazul, se adaugă 1 la contorul "nr". În caz contrar, funcția verifică dacă ultima cifră a lui "n" este "0" și, dacă este cazul, se adaugă 1 la contorul "nr". Apoi, se face o apelare recursivă a funcției pentru partea "n" fără ultima cifră, până când "n" devine zero. În cele din urmă, funcția returnează numărul total de cifre "0" găsite în "n".

Rezolvare

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

   if isinstance(n, int) and n >= 0:
       return True
   else:
       return False

def validate_nr(nr):

   if isinstance(nr, int) and nr >= 0:
       return True
   else:
       return False

def nr_cif_zero(n, nr):

   if n == 0:
       nr += 1
   elif n > 0:
       if n % 10 == 0:
           nr += 1
       nr = nr_cif_zero(n // 10, nr)
   return nr

def main():

   n = input("Introduceti un numar intreg pozitiv: ")
   try:
       n = int(n)
       if validate_n(n):
           nr = nr_cif_zero(n, 0)
           if validate_nr(nr):
               print(f"Numarul de cifre 0 din numarul introdus este: {nr}")
           else:
               print("Numarul de cifre 0 obtinut nu este valid.")
       else:
           print("Numarul introdus nu este valid.")
   except ValueError:
       print("Nu ati introdus un numar intreg pozitiv.")

</syntaxhighlight>