0824 - CifMaxRec: Difference between revisions

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


==Exemplu ==
==Exemplu ==
<code>cifmax(2050)</code> este <code>5</code> <br>
===Exemplu 1===
<code>cifmax(209074536153)</code> este <code>9</code>
Introduceti un numar intreg mai mic decat 2.000.000.000: 2050 <br>
Datele de intrare corespund restricțiilor impuse. <br>
Cifra maxima a numarului 2050 este: 5
===Exemplu 2===
Introduceti un numar intreg mai mic decat 2.000.000.000: 2000000000 <br>
Datele de intrare nu corespund restricțiilor impuse.
===Exemplu 3===
Introduceti un numar intreg mai mic decat 2.000.000.000: abc <br>
Datele de intrare nu corespund restricțiilor impuse.
 


==Rezolvare==
==Rezolvare==
  def validare_numar(numar):
  def validate_input(numar):
     if isinstance(numar, int) and numar < 2000000000:
     if not isinstance(numar, int):
         return True
        return False
     return False
    if numar >= 2000000000:
  def cifra_maxima(numar, cifra_max=0):
         return False
     if numar < 10:
     return True
         if numar > cifra_max:
  def cifmax(numar):
            cifra_max = numar
     if validate_input(numar):
         return cifra_max
         cifra_maxima = int(max(str(numar)))
        print(f"Datele de intrare corespund restricțiilor impuse.\nCifra maxima a numarului {numar} este:  
{cifra_maxima}")
         return cifra_maxima
     else:
     else:
         cifra_curenta = numar % 10
         print("Datele de intrare nu corespund restricțiilor impuse.")
        if cifra_curenta > cifra_max:
         return None
            cifra_max = cifra_curenta
         return cifra_maxima(numar // 10, cifra_max)
  def main():
  def main():
     numar = input("Introduceti un numar: ")
     numar = input("Introduceti un numar intreg mai mic decat 2.000.000.000: ")
     if validare_numar(numar):
     try:
         cifra_max = cifra_maxima(numar)
         numar = int(numar)
         print(f"Cifra maxima a numarului {numar} este {cifra_max}.")
    except ValueError:
     else:
         print("Datele de intrare nu corespund restricțiilor impuse.")
        print("Numarul introdus nu este valid.")
        return
     cifmax(numar)
  if __name__ == '__main__':
  if __name__ == '__main__':
     main()
     main()
==Explicații ==
În primul rând, am definit o funcție de validare a datelor de intrare, care se numește validate_input. Această funcție primește un singur argument, numar, și returnează True dacă numărul respectă restricțiile impuse în enunț și False altfel. În cazul de față, restricțiile sunt ca numărul să fie un întreg și să fie mai mic decât 2.000.000.000.
Următoarea funcție definită este funcția cifmax. Această funcție primește un singur argument, numar, care reprezintă numărul pentru care trebuie să găsim cifra maximă. În interiorul funcției, mai întâi se validează datele de intrare folosind funcția validate_input. Dacă datele sunt valide, se găsește cifra maximă a numărului prin convertirea acestuia într-un șir de caractere (str(numar)), apoi găsirea valorii maxime (max) a acestui șir de caractere. Această valoare este convertită înapoi într-un întreg folosind funcția int, iar apoi se afișează un mesaj corespunzător și se returnează cifra maximă găsită. Dacă datele de intrare nu sunt valide, se afișează un mesaj corespunzător și se returnează None.
Funcția main este funcția principală a programului și este apelată la finalul codului. Această funcție nu primește argumente, dar solicită utilizatorului să introducă un număr întreg prin intermediul funcției input. Acest număr este apoi convertit într-un întreg folosind funcția int, iar apoi este apelată funcția cifmax pentru a găsi cifra maximă a numărului respectiv. Dacă conversia la întreg nu poate fi realizată, se afișează un mesaj corespunzător și funcția main se termină.

Revision as of 15:04, 29 March 2023

Cerința

Să se scrie o funcție python care să returneze cifra maximă a unui număr natural transmis ca parametru.

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 cifmax
  • funcția va avea un parametru reprezentând numărul dat
  • numărul pentru care se calculează cifra maximă va fi mai mic decât 2.000.000.000

Exemplu

Exemplu 1

Introduceti un numar intreg mai mic decat 2.000.000.000: 2050
Datele de intrare corespund restricțiilor impuse.
Cifra maxima a numarului 2050 este: 5

Exemplu 2

Introduceti un numar intreg mai mic decat 2.000.000.000: 2000000000
Datele de intrare nu corespund restricțiilor impuse.

Exemplu 3

Introduceti un numar intreg mai mic decat 2.000.000.000: abc
Datele de intrare nu corespund restricțiilor impuse.


Rezolvare

def validate_input(numar):
   if not isinstance(numar, int):
       return False
   if numar >= 2000000000:
       return False
   return True
def cifmax(numar):
   if validate_input(numar):
       cifra_maxima = int(max(str(numar)))
       print(f"Datele de intrare corespund restricțiilor impuse.\nCifra maxima a numarului {numar} este: 
{cifra_maxima}")
       return cifra_maxima
   else:
       print("Datele de intrare nu corespund restricțiilor impuse.")
       return None
def main():
   numar = input("Introduceti un numar intreg mai mic decat 2.000.000.000: ")
   try:
       numar = int(numar)
   except ValueError:
       print("Datele de intrare nu corespund restricțiilor impuse.")
       return
   cifmax(numar)
if __name__ == '__main__':
   main()

Explicații

În primul rând, am definit o funcție de validare a datelor de intrare, care se numește validate_input. Această funcție primește un singur argument, numar, și returnează True dacă numărul respectă restricțiile impuse în enunț și False altfel. În cazul de față, restricțiile sunt ca numărul să fie un întreg și să fie mai mic decât 2.000.000.000.

Următoarea funcție definită este funcția cifmax. Această funcție primește un singur argument, numar, care reprezintă numărul pentru care trebuie să găsim cifra maximă. În interiorul funcției, mai întâi se validează datele de intrare folosind funcția validate_input. Dacă datele sunt valide, se găsește cifra maximă a numărului prin convertirea acestuia într-un șir de caractere (str(numar)), apoi găsirea valorii maxime (max) a acestui șir de caractere. Această valoare este convertită înapoi într-un întreg folosind funcția int, iar apoi se afișează un mesaj corespunzător și se returnează cifra maximă găsită. Dacă datele de intrare nu sunt valide, se afișează un mesaj corespunzător și se returnează None.

Funcția main este funcția principală a programului și este apelată la finalul codului. Această funcție nu primește argumente, dar solicită utilizatorului să introducă un număr întreg prin intermediul funcției input. Acest număr este apoi convertit într-un întreg folosind funcția int, iar apoi este apelată funcția cifmax pentru a găsi cifra maximă a numărului respectiv. Dacă conversia la întreg nu poate fi realizată, se afișează un mesaj corespunzător și funcția main se termină.