0919 - NrCifreZeroRec1: Difference between revisions

From Bitnami MediaWiki
Cata (talk | contribs)
Pagină nouă: == 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â...
 
Cata (talk | contribs)
No edit summary
Line 7: Line 7:
* Ordinea parametrilor este n , nr
* Ordinea parametrilor este n , nr
* n va fi mai mic decât 2.000.000.000
* n va fi mai mic decât 2.000.000.000
== Important ==
== Explicație ==
Soluţia propusă va conţine doar definiţia funcţiei cerute. Prezenţa în soluţie a altor instrucţiuni poate duce erori de compilare sau de execuţie care vor avea ca efect depunctarea soluţiei.
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 ==
== Rezolvare ==
<syntaxhighlight lang="python">
<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):
def nr_cif_zero(n, nr):
     if n == 0:
     if n == 0:
Line 20: Line 34:
         nr = nr_cif_zero(n // 10, nr)
         nr = nr_cif_zero(n // 10, nr)
     return 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>
</syntaxhighlight>

Revision as of 13:47, 6 April 2023

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>