0864 - CifMinMax: Difference between revisions
Cuceu Andrei (talk | contribs) No edit summary |
Vardai Erwin (talk | contribs) |
||
Line 3: | Line 3: | ||
==Date de intrare== | ==Date de intrare== | ||
Se citește de la tastatură: | |||
*'''numar''' - un număr natural pentru care se vor determina cea mai mare și cea mai mică cifră. Acesta trebuie să fie mai mic decât '''2.000.000.000'''. | *'''numar''' - un număr natural pentru care se vor determina cea mai mare și cea mai mică cifră. Acesta trebuie să fie mai mic decât '''2.000.000.000'''. | ||
*'''cif_max''' - o referință la o variabilă în care funcția va stoca cea mai mare cifră a numărului numar. | *'''cif_max''' - o referință la o variabilă în care funcția va stoca cea mai mare cifră a numărului numar. | ||
*'''cif_min''' - o referință la o variabilă în care funcția va stoca cea mai mică cifră a numărului numar. | *'''cif_min''' - o referință la o variabilă în care funcția va stoca cea mai mică cifră a numărului numar. | ||
==Date de ieșire== | ==Date de ieșire== |
Revision as of 13:58, 6 May 2023
Cerință
Să se scrie o funcție Python care să determine cea mai mare și cea mai mică cifră a unui număr natural transmis ca parametru. Funcția va întoarce rezultatele prin intermediul unor parametri de ieşire.
Date de intrare
Se citește de la tastatură:
- numar - un număr natural pentru care se vor determina cea mai mare și cea mai mică cifră. Acesta trebuie să fie mai mic decât 2.000.000.000.
- cif_max - o referință la o variabilă în care funcția va stoca cea mai mare cifră a numărului numar.
- cif_min - o referință la o variabilă în care funcția va stoca cea mai mică cifră a numărului numar.
Date de ieșire
- cif_max - cea mai mare cifră a numărului numar.
- cif_min - cea mai mică cifră a numărului numar.
Restricții de precizări
- Numele funcției va fi cifminmax
- Funcția va avea trei parametri: primul parametru reprezintă numărul pentru care se calculează valorile cerute; al doilea parametru va reprezenta cifra maximă, iar al treilea va reprezenta cifra minimă
- numărul pentru care se calculează cele doua valori va fi mai mic decât 2.000.000.000
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
Rezolvare ver. 1
<syntaxhighlight lang="python" line="1" start="1"> def validare(n):
return 0 <= int(n) < 2_000_000_000
def cifminmax(numar, cifra_maxima, cifra_minima):
cifra_maxima = 0 cifra_minima = 9
while numar > 0: cifra_curenta = numar % 10
if cifra_curenta > cifra_maxima: cifra_maxima = cifra_curenta
if cifra_curenta < cifra_minima: cifra_minima = cifra_curenta
numar //= 10
return cifra_maxima, cifra_minima
if __name__ == '__main__':
numar = input("Introduceti un numar pozitiv si mai mic decat 2.000.000.000: ")
if validare(numar): numar = int(numar) print("Datele introduse corespund restricțiilor impuse") cifra_maxima, cifra_minima = cifminmax(numar, 0, 9) print(f"Cea mai mare cifra a numarului {numar} este {cifra_maxima}.") print(f"Cea mai mica cifra a numarului {numar} este {cifra_minima}.") else: print("Datele introduse nu corespund restricțiilor impuse")
</syntaxhighlight>
Explicatii
Acesta este un program Python care implementează funcția cifminmax descrisă anterior. Programul începe prin definirea unei funcții de validare care verifică dacă numărul introdus de utilizator se încadrează în restricțiile impuse (adica sa fie pozitiv și mai mic decât 2.000.000.000).
Funcția cifminmax primește ca parametri: numar, cifra_maxima și cifra_minima. cifra_maxima și cifra_minima sunt inițializate în interiorul funcției cu 0 și 9, deoarece sunt inițial cele mai mici și cele mai mari cifre posibile.
Apoi, programul folosește o buclă while pentru a itera prin fiecare cifră a numărului numar, începând cu ultima cifră (adica cifra unitatilor) și mergând către cifra cu cea mai mare putere (adică cifra cea mai semnificativă). În fiecare iterație, programul stochează cifra curentă într-o variabilă numită cifra_curenta.
Programul apoi verifică dacă cifra_curenta este mai mare decât cifra_maxima. Dacă da, atunci cifra_maxima este actualizată cu cifra_curenta. În mod similar, dacă cifra_curenta este mai mică decât cifra_minima, atunci cifra_minima este actualizată cu cifra_curenta.
După ce bucla while se încheie, programul returnează cele două valori cifra_maxima și cifra_minima.
În secțiunea if __name__ == '__main__':, programul primește inputul utilizatorului prin intermediul funcției input(), apoi verifică dacă numărul introdus este valid folosind funcția validare. Dacă numărul este valid, programul îl convertește într-un integer și calculează cifra maximă și cea minimă folosind funcția cifminmax. În cele din urmă, programul afișează cele două valori de ieșire pentru utilizator.