0920 - CifMaxMinRec
Cerinţa
Să se scrie o python care să determine cifra maximă și cifra minimă a unui număr natural transmis ca parametru. Funcția va întoarce rezultatele prin intermediul unor parametri de ieșire.
Date de intrare
Se va introduce de la tastatură un număr natural care va fi transmis ca perimetru
Date de ieșire
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse." În cazul în care datele introduse de la tastatură nu îndeplinesc cerințele enunțate, pe ecran se va afișa mesajul "Datele de intrare nu corespund restricțiilor impuse.".
Restricţii şi precizări
numele funcției va fi cifmaxmin
funcția va avea trei parametri:
n
, numărul dat
max
, cifra maximă a lui n
min
, cifra minimă a lui n
ordinea parametrilor este: n
max
min
n
va fi mai mic decât 2.000.000.000
Exemplu
Exemplu 1
<syntaxhighlight lang="python" line> cifmaxmin(12345, 0, 0)
Datele de intrare corespund restricțiilor impuse. Cifra maxima este: 5 Cifra minima este: 1 </syntaxhighlight>
Exemplu 2
<syntaxhighlight lang="python" line> cifmaxmin(12345, 0, 0)
Datele de intrare corespund restricțiilor impuse. Cifra maxima este: 5 Cifra minima este: 1
</syntaxhighlight>
Exemplu 3
<syntaxhighlight lang="python" line> cifmaxmin(2000000000, 0, 0)
Datele de intrare nu corespund restricțiilor impuse.
</syntaxhighlight>
Important
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.
Rezolvare
<syntaxhighlight lang="python" line> bdef validare(n):
if n >= 2000000000: print("Datele de intrare nu corespund restricțiilor impuse.") return False print("Datele de intrare corespund restricțiilor impuse.") return True def cifmaxmin(n, max, min): if not validare(n): return while n > 0: cifra = n % 10 if cifra > max: max = cifra if cifra < min or min == 0: min = cifra n //= 10 print(f"Cifra maxima este: {max}") print(f"Cifra minima este: {min}") def main(): n = int(input("Introduceti un numar intreg mai mic decat 2.000.000.000: ")) cifmaxmin(n, 0, 0) if __name__ == "__main__": main()
</syntaxhighlight>
Explicații
Pentru a explica funcția cifmaxmin, vom parcurge codul pe bucăți:
Funcția începe prin apelarea funcției de validare cu numărul dat ca argument. Dacă funcția de validare returnează False, înseamnă că numărul nu respectă restricțiile impuse și funcția cifmaxmin se oprește prin instrucțiunea return. Inițializăm variabilele max și min cu 0. Într-un loop while, parcurgem cifrele numărului dat n: Obținem ultima cifră a lui n prin modulo 10, și o salvăm în variabila cifra. Comparăm cifra cu valoarea max și o actualizăm dacă este cazul. Comparăm cifra cu valoarea min și o actualizăm dacă este cazul. De asemenea, verificăm dacă min are valoarea 0, caz în care îi atribuim valoarea cifrei. Împărțim n la 10 pentru a elimina ultima cifră și a trece la cifra următoare. Afișăm valorile finale ale max și min.