4210 - FCrescRec: Difference between revisions

From Bitnami MediaWiki
Cata (talk | contribs)
mNo edit summary
Cata (talk | contribs)
No edit summary
Line 9: Line 9:
FCrescRec(4) = 1, FCrescRec(975311) = 1, FCrescRec(43711) = 0, FCrescRec(24) = 0.
FCrescRec(4) = 1, FCrescRec(975311) = 1, FCrescRec(43711) = 0, FCrescRec(24) = 0.


== 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.
Această funcție verifică dacă cifrele unui număr sunt în ordine crescătoare.
 
Dacă numărul este format dintr-o singură cifră, atunci returnează 1, deoarece o singură cifră este întotdeauna considerată ordonată crescător.
 
Dacă ultima cifră a numărului este mai mare decât penultima cifră a numărului, funcția returnează 0, deoarece cifrele nu sunt în ordine crescătoare.
 
În caz contrar, funcția este recursiv apelată pentru numărul obținut prin eliminarea ultimei cifre.


== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python">
<syntaxhighlight lang="python">
def validate_n(n):
    if isinstance(n, int) and n >= 0 and n <= 2147000000:
        return True
    else:
        return False
def FCrescRec(n):
def FCrescRec(n):
     if n < 10:
     if n < 10:
Line 21: Line 34:
     else:
     else:
         return FCrescRec(n // 10)
         return FCrescRec(n // 10)
def main():
    n = input("Introduceti un numar intreg pozitiv: ")
    try:
        n = int(n)
        if validate_n(n):
            result = FCrescRec(n)
            if result == 1:
                print(f"Cifrele numarului {n} sunt in ordine crescatoare.")
            else:
                print(f"Cifrele numarului {n} nu sunt in ordine crescatoare.")
        else:
            print("Numarul introdus nu este valid.")
    except ValueError:
        print("Nu ati introdus un numar intreg pozitiv.")
</syntaxhighlight>
</syntaxhighlight>

Revision as of 09:44, 6 April 2023

Cerința

Scrieți funcția recursivă FCrescRec care primind ca parametru un număr natural n, returnează 1 dacă cifrele sale, începând cu cifra unităţilor sunt dispuse în ordine crescătoare, sau returnează 0 dacă n nu are cifrele în ordine crescătoare.

Restricții și precizări

  • 0 ≤ n ≤ 2.147.000.000
  • Numele funcției este FCrescRec.
  • Se recomandă utilizarea recursivității în rezolvarea problemei.

Exemplu:

FCrescRec(4) = 1, FCrescRec(975311) = 1, FCrescRec(43711) = 0, FCrescRec(24) = 0.

Explicație

Această funcție verifică dacă cifrele unui număr sunt în ordine crescătoare.

Dacă numărul este format dintr-o singură cifră, atunci returnează 1, deoarece o singură cifră este întotdeauna considerată ordonată crescător.

Dacă ultima cifră a numărului este mai mare decât penultima cifră a numărului, funcția returnează 0, deoarece cifrele nu sunt în ordine crescătoare.

În caz contrar, funcția este recursiv apelată pentru numărul obținut prin eliminarea ultimei cifre.

Rezolvare

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

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


def FCrescRec(n):

   if n < 10:
       return 1
   elif n % 10 > (n // 10) % 10:
       return 0
   else:
       return FCrescRec(n // 10)


def main():

   n = input("Introduceti un numar intreg pozitiv: ")
   try:
       n = int(n)
       if validate_n(n):
           result = FCrescRec(n)
           if result == 1:
               print(f"Cifrele numarului {n} sunt in ordine crescatoare.")
           else:
               print(f"Cifrele numarului {n} nu sunt in ordine crescatoare.")
       else:
           print("Numarul introdus nu este valid.")
   except ValueError:
       print("Nu ati introdus un numar intreg pozitiv.")

</syntaxhighlight>