0920 - CifMaxMinRec: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: ==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 înde...
 
No edit summary
 
(6 intermediate revisions by the same user not shown)
Line 6: Line 6:


==Date de ieșire==
==Date de ieșire==
Pe ecran se va afișa mesajul: "Datele de intrare corespund restricțiilor impuse."
Dacă datele de intrare corespund restrictiilor impuse se va afișa mesajul "Datele de intrare corespund restricțiilor" și pe un rând nou se afișează ceea ce se cere. Altfel, dacă datele de intrare nu corespund cerinței se va afișa mesajul: "Datele de intrare nu corespund cerinței
Î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==
==Restricţii şi precizări==
numele funcției va fi <code>cifmaxmin</code>
*numele funcției va fi <code>cifmaxmin</code>
funcția va avea trei parametri:
*funcția va avea trei parametri:
<code>n</code>, numărul dat
*<code>n</code>, numărul dat
<code>max</code>, cifra maximă a lui <code>n</code>
*<code>max</code>, cifra maximă a lui <code>n</code>
<code>min</code>, cifra minimă a lui <code>n</code>
*<code>min</code>, cifra minimă a lui <code>n</code>
ordinea parametrilor este: <code>n</code> <code>max</code> <code>min</code>
*ordinea parametrilor este: <code>n</code> <code>max</code> <code>min</code>
<code>n</code> va fi mai mic decât <code>2.000.000.000</code>
*<code>n</code> va fi mai mic decât <code>2.000.000.000</code>


==Exemplu==
==Exemplu==
cifmaxmin(12345, 0, 0) # În acest exemplu, numărul dat este <code>12345</code>, iar parametrii de ieșire <code>max</code> și <code>min</code> inițial sunt 0. Funcția ar trebui să afișeze
===Exemplu 1===
Datele de intrare corespund restricțiilor impuse.
:Intrare:
Cifra maxima este: <code>5</code>
;cifmaxmin(12345, 0, 0)  
Cifra minima este: <code>1</code>
:Iesire:
;Datele de intrare corespund restricțiilor impuse.
;Cifra maxima este: 5  
;Cifra minima este: 1  


===Exemplu 2===
:Intrare:
;cifmaxmin(12345, 0, 0)
:Iesire:
;Datele de intrare corespund restricțiilor impuse.
;Cifra maxima este: 5
;Cifra minima este: 1
===Exemplu 3===
:Intrare:
;cifmaxmin(2000000000, 0, 0)
:Iesire:
;Datele de intrare nu corespund restricțiilor impuse.
==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==
<syntaxhighlight lang="python" line="1">
def 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):
  def cifmaxmin(n, max, min):
     if n < 0 or n > 2000000000:
     if not validare(n):
         print("Datele de intrare nu corespund restricțiilor impuse.")
         return 
     else:
     while n > 0:
         cifre = [int(x) for x in str(n)]
         cifra = n % 10
         max = max(cifre)
         if cifra > max:
         min = min(cifre)
            max = cifra
         print("Datele de intrare corespund restricțiilor impuse.")
         if cifra < min or min == 0:
        print("Cifra maxima este:", max)
            min = cifra
        print("Cifra minima este:", min)
         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.

Latest revision as of 21:14, 14 May 2023

Cerinţa[edit | edit source]

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[edit | edit source]

Se va introduce de la tastatură un număr natural care va fi transmis ca perimetru

Date de ieșire[edit | edit source]

Dacă datele de intrare corespund restrictiilor impuse se va afișa mesajul "Datele de intrare corespund restricțiilor" și pe un rând nou se afișează ceea ce se cere. Altfel, dacă datele de intrare nu corespund cerinței se va afișa mesajul: "Datele de intrare nu corespund cerinței

Restricţii şi precizări[edit | edit source]

  • 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[edit | edit source]

Exemplu 1[edit | edit source]

Intrare:
cifmaxmin(12345, 0, 0)
Iesire:
Datele de intrare corespund restricțiilor impuse.
Cifra maxima este
5
Cifra minima este
1


Exemplu 2[edit | edit source]

Intrare:
cifmaxmin(12345, 0, 0)
Iesire:
Datele de intrare corespund restricțiilor impuse.
Cifra maxima este
5
Cifra minima este
1

Exemplu 3[edit | edit source]

Intrare:
cifmaxmin(2000000000, 0, 0)
Iesire:
Datele de intrare nu corespund restricțiilor impuse.

Important[edit | edit source]

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[edit | edit source]

<syntaxhighlight lang="python" line="1">

def 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[edit | edit source]

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.