0864 - CifMinMax: Difference between revisions

From Bitnami MediaWiki
Line 15: Line 15:
===Rezolvare ver. 1===
===Rezolvare ver. 1===
<syntaxhighlight lang="python" line="1" start="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):
def cifminmax(numar, cifra_maxima, cifra_minima):
     cifra_maxima = 0
     cifra_maxima = 0
     cifra_minima = 9
     cifra_minima = 9
   
 
     while numar > 0:
     while numar > 0:
         cifra_curenta = numar % 10
         cifra_curenta = numar % 10
       
 
         if cifra_curenta > cifra_maxima:
         if cifra_curenta > cifra_maxima:
             cifra_maxima = cifra_curenta
             cifra_maxima = cifra_curenta
       
 
         if cifra_curenta < cifra_minima:
         if cifra_curenta < cifra_minima:
             cifra_minima = cifra_curenta
             cifra_minima = cifra_curenta
       
 
         numar //= 10
         numar //= 10
   
 
     return cifra_maxima, cifra_minima
     return cifra_maxima, cifra_minima




if __name__ == '__main__':
if __name__ == '__main__':
     numar = int(input("Introduceti un numar pozitiv si mai mic decat 2.000.000.000: "))
     numar = input("Introduceti un numar pozitiv si mai mic decat 2.000.000.000: ")
   
 
     if numar <= 0 or numar >= 2000000000:
     if validare(numar):
         print("Numarul trebuie sa fie pozitiv si mai mic decat 2.000.000.000.")
        numar = int(numar)
    else:
         print("Datele introduse corespund restricțiilor impuse")
         cifra_maxima, cifra_minima = cifminmax(numar, 0, 9)
         cifra_maxima, cifra_minima = cifminmax(numar, 0, 9)
         print(f"Cea mai mare cifra a numarului {numar} este {cifra_maxima}.")
         print(f"Cea mai mare cifra a numarului {numar} este {cifra_maxima}.")
         print(f"Cea mai mica cifra a numarului {numar} este {cifra_minima}.")
         print(f"Cea mai mica cifra a numarului {numar} este {cifra_minima}.")
 
    else:
 
        print("Datele introduse nu corespund restricțiilor impuse")
</syntaxhighlight>
</syntaxhighlight>

Revision as of 20:26, 19 March 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.

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>