0920 - CifMaxMinRec: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
Line 19: Line 19:


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


==Important==
==Important==
Line 28: Line 40:


==Rezolvare==
==Rezolvare==
def cifmaxmin(n, max=None, min=None):
bdef validare(n):
    # Verifica daca inputul este valid
     if n >= 2000000000:
     if not n.isdigit() or int(n) >= 2000000000:
         print("Datele de intrare nu corespund restricțiilor impuse.")
         return "Datele de intrare nu corespund restricțiilor impuse."  
        return False
     # Daca max si min nu sunt specificate, le initializeaza cu prima cifra a lui n
     print("Datele de intrare corespund restricțiilor impuse.")
     if max is None and min is None:
     return True
        max = min = int(n[0])  
def cifmaxmin(n, max, min):
    # Parcurge fiecare cifra din n si determina max si min
    if not validare(n):
     for cifra in n:
        return 
         cifra = int(cifra)
     while n > 0:
         cifra = n % 10
         if cifra > max:
         if cifra > max:
             max = cifra
             max = cifra
         if cifra < min:
         if cifra < min or min == 0:
             min = cifra
             min = cifra
     # Returneaza max si min
        n //= 10   
     return max, min
     print(f"Cifra maxima este: {max}")
#Această funcție poate fi integrată într-un program mai mare împreună cu o funcție de validare și o funcție principală care să afișeze rezultatele.
    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()
 
==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.

Revision as of 15:43, 29 March 2023

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

cifmaxmin(12345, 0, 0)

  1. Datele de intrare corespund restricțiilor impuse.
  2. Cifra maxima este: 5
  3. Cifra minima este: 1

Exemplu 2

cifmaxmin(12345, 0, 0)

  1. Datele de intrare corespund restricțiilor impuse.
  2. Cifra maxima este: 5
  3. Cifra minima este: 1

Exemplu 3

cifmaxmin(2000000000, 0, 0)

  1. 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

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()

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.