0864 - CifMinMax

From Bitnami MediaWiki

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

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele de intrare corespund restricțiilor impuse." și programul va afișa:

  • cif_max - cea mai mare cifră a numărului numar.
  • cif_min - cea mai mică cifră a numărului numar.

În caz contrar, se va afișa pe ecran: "Datele de intrare nu corespund restricțiilor impuse."

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.