4208 - ExistaImpareRec: Difference between revisions

From Bitnami MediaWiki
Cata (talk | contribs)
Pagină nouă: == Cerința == Scrieți funcția recursivă <span style="color: red;">ExistaImpareRec</span> care primind ca parametru un număr natural <span style="color: red;">n</span>, returnează <span style="color: red;">1</span> dacă <span style="color: red;">n</span> conține cel puțin o cifră impară, sau returnează <span style="color: red;">0</span> dacă <span style="color: red;">n</span> conține doar cifre pare. == Restricții și precizări == * <span style="color: red;">0...
 
Cata (talk | contribs)
No edit summary
Line 2: Line 2:
Scrieți funcția recursivă <span style="color: red;">ExistaImpareRec</span> care primind ca parametru un număr natural <span style="color: red;">n</span>, returnează <span style="color: red;">1</span> dacă <span style="color: red;">n</span> conține cel puțin o cifră impară, sau returnează <span style="color: red;">0</span> dacă <span style="color: red;">n</span> conține doar cifre pare.
Scrieți funcția recursivă <span style="color: red;">ExistaImpareRec</span> care primind ca parametru un număr natural <span style="color: red;">n</span>, returnează <span style="color: red;">1</span> dacă <span style="color: red;">n</span> conține cel puțin o cifră impară, sau returnează <span style="color: red;">0</span> dacă <span style="color: red;">n</span> conține doar cifre pare.
== Restricții și precizări ==  
== Restricții și precizări ==  
* <span style="color: red;">0 ≤ n ≤ 231 - 1</span>
* <span style="color: red;">0 ≤ n ≤ 2<sup>31</sup> - 1</span>
* Numele funcției este <span style="color: red;">ExistaImpareRec</span>.
* Numele funcției este <span style="color: red;">ExistaImpareRec</span>.
* Se recomandă utilizarea recursivității în rezolvarea problemei.
* Se recomandă utilizarea recursivității în rezolvarea problemei.
== Exemplu ==
== Exemplu ==
<span style="color: red;">ExistaImpareRec(240) = 0</span> și <span style="color: red;">ExistaImpareRec(2134) = 1</span>.
<span style="color: red;">ExistaImpareRec(240) = 0</span> și <span style="color: red;">ExistaImpareRec(2134) = 1</span>.
== Important ==
== Explicație ==
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.
Aceasta este o funcție recursivă numită ExistaImpareRec, care ia un argument n și returnează 1 dacă cel puțin una dintre cifrele numărului n este impară, și 0 în caz contrar.
 
Pentru cazul de bază, dacă n este 0, funcția returnează 0. Dacă n este impar, funcția returnează 1. În caz contrar, funcția returnează ExistaImpareRec(n // 10), adică apelul recursiv al funcției cu n împărțit la 10.
 
== Rezolvare ==
== Rezolvare ==
=== Varianta 1 ===
=== Varianta 1 ===
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
def validate_n(n):
    if isinstance(n, int) and n >= 0 and n <= 2**31 - 1:
        return True
    else:
        return False
def ExistaImpareRec(n):
def ExistaImpareRec(n):
     if n == 0:
     if n == 0:
Line 19: Line 29:
     else:
     else:
         return ExistaImpareRec(n // 10)
         return ExistaImpareRec(n // 10)
def main():
    n = input("Introduceti un numar intreg intre 0 si 2^31 - 1: ")
    try:
        n = int(n)
        if validate_n(n):
            result = ExistaImpareRec(n)
            if result == 1:
                print(f"Exista cel putin o cifra impara in numarul {n}.")
            else:
                print(f"Toate cifrele numarului {n} sunt pare.")
        else:
            print("Numarul introdus nu este valid.")
    except ValueError:
        print("Nu ati introdus un numar intreg.")
</syntaxhighlight>
</syntaxhighlight>

Revision as of 12:00, 5 April 2023

Cerința

Scrieți funcția recursivă ExistaImpareRec care primind ca parametru un număr natural n, returnează 1 dacă n conține cel puțin o cifră impară, sau returnează 0 dacă n conține doar cifre pare.

Restricții și precizări

  • 0 ≤ n ≤ 231 - 1
  • Numele funcției este ExistaImpareRec.
  • Se recomandă utilizarea recursivității în rezolvarea problemei.

Exemplu

ExistaImpareRec(240) = 0 și ExistaImpareRec(2134) = 1.

Explicație

Aceasta este o funcție recursivă numită ExistaImpareRec, care ia un argument n și returnează 1 dacă cel puțin una dintre cifrele numărului n este impară, și 0 în caz contrar.

Pentru cazul de bază, dacă n este 0, funcția returnează 0. Dacă n este impar, funcția returnează 1. În caz contrar, funcția returnează ExistaImpareRec(n // 10), adică apelul recursiv al funcției cu n împărțit la 10.

Rezolvare

Varianta 1

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

   if isinstance(n, int) and n >= 0 and n <= 2**31 - 1:
       return True
   else:
       return False


def ExistaImpareRec(n):

   if n == 0:
       return 0
   elif n % 2 == 1:
       return 1
   else:
       return ExistaImpareRec(n // 10)

def main():

   n = input("Introduceti un numar intreg intre 0 si 2^31 - 1: ")
   try:
       n = int(n)
       if validate_n(n):
           result = ExistaImpareRec(n)
           if result == 1:
               print(f"Exista cel putin o cifra impara in numarul {n}.")
           else:
               print(f"Toate cifrele numarului {n} sunt pare.")
       else:
           print("Numarul introdus nu este valid.")
   except ValueError:
       print("Nu ati introdus un numar intreg.")

</syntaxhighlight>