4210 - FCrescRec: Diferență între versiuni

De la Universitas MediaWiki
mFără descriere a modificării
Fără descriere a modificării
Linia 9: Linia 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:
Linia 21: Linia 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>

Versiunea de la data 6 aprilie 2023 09:44

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

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