0824 - CifMaxRec: Difference between revisions

From Bitnami MediaWiki
No edit summary
 
(3 intermediate revisions by the same user not shown)
Line 17: Line 17:
==Exemplu ==
==Exemplu ==
===Exemplu 1===
===Exemplu 1===
<syntaxhighlight lang="python">
:Intrare:
Introduceti un numar intreg mai mic decat 2.000.000.000: 2050 <br>
:Introduceti un numar intreg mai mic decat 2.000.000.000: 2050  
Datele de intrare corespund restricțiilor impuse. <br>
;Datele de intrare corespund restricțiilor impuse.  
Cifra maxima a numarului 2050 este: 5
:Iesire:
</syntaxhighlight>
;Cifra maxima a numarului 2050 este: 5
 
 
===Exemplu 2===
===Exemplu 2===
<syntaxhighlight lang="python">
:Intrare:
Introduceti un numar intreg mai mic decat 2.000.000.000: 2000000000 <br>
;Introduceti un numar intreg mai mic decat 2.000.000.000: 2000000000  
Datele de intrare nu corespund restricțiilor impuse.  
:Iesire:
</syntaxhighlight>
;Datele de intrare nu corespund restricțiilor impuse.  
 
===Exemplu 3===
===Exemplu 3===
<syntaxhighlight lang="python">
:Intrare:
Introduceti un numar intreg mai mic decat 2.000.000.000: abc  
;Introduceti un numar intreg mai mic decat 2.000.000.000: abc
Datele de intrare nu corespund restricțiilor impuse.
:Iesire:
</syntaxhighlight>
;Datele de intrare nu corespund restricțiilor impuse.
 


==Rezolvare==
==Rezolvare==
<syntaxhighlight lang="python">
<syntaxhighlight lang="python" line="1">
  def validate_input(numar):
  def validare(n, c):
     if not isinstance(numar, int):
     if not isinstance(n, int) or not isinstance(c, int):
         return False
         return False
     if numar >= 2000000000:
     if n < 1 or n > 2000000000 or c < 0 or c > 9:
         return False
         return False
     return True
     return True


def cifmax(numar):
 
     if not validate_input(numar):
def elimina_cifra(n, c):
         print("Datele de intrare nu corespund restricțiilor impuse.")
     if not validare(n, c):
         return None
         print("Datele de intrare nu corespund cerintei")
     cifra_maxima = int(max(str(numar)))
         return
     print(f"Cifra maxima a numarului {numar} este: {cifra_maxima}")
     numar_nou = 0
    return cifra_maxima
    putere = 1
    while n > 0:
        ultima_cifra = n % 10
        if ultima_cifra != c:
            numar_nou += ultima_cifra * putere
            putere *= 10
        n //= 10
    if numar_nou == 0:
        print(f"Numarul {n} nu contine cifre diferite de {c}")
     else:
        print(f"Numarul obtinut prin eliminarea cifrei {c} din {n} este {numar_nou}")
 


def main():
def main():
     numar = input("Introduceti un numar intreg mai mic decat 2.000.000.000: ")
     n = int(input("Introduceti un numar natural: "))
     try:
     c = int(input("Introduceti cifra: "))
        numar = int(numar)
     elimina_cifra(n, c)
    except ValueError:
 
        print("Datele de intrare nu corespund restricțiilor impuse.")
        return
     cifmax(numar)


if __name__ == '__main__':
if __name__ == "__main__":
     main()
     main()


    main()
</syntaxhighlight>
</syntaxhighlight>


==Explicații ==
==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.
#1 Î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.
#2 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ă.
#3 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ă.

Latest revision as of 18:44, 14 May 2023

Cerința[edit | edit source]

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

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

Exemplu 1[edit | edit source]

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


Exemplu 2[edit | edit source]

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

Exemplu 3[edit | edit source]

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

Rezolvare[edit | edit source]

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

def validare(n, c):
   if not isinstance(n, int) or not isinstance(c, int):
       return False
   if n < 1 or n > 2000000000 or c < 0 or c > 9:
       return False
   return True


def elimina_cifra(n, c):

   if not validare(n, c):
       print("Datele de intrare nu corespund cerintei")
       return
   numar_nou = 0
   putere = 1
   while n > 0:
       ultima_cifra = n % 10
       if ultima_cifra != c:
           numar_nou += ultima_cifra * putere
           putere *= 10
       n //= 10
   if numar_nou == 0:
       print(f"Numarul {n} nu contine cifre diferite de {c}")
   else:
       print(f"Numarul obtinut prin eliminarea cifrei {c} din {n} este {numar_nou}")


def main():

   n = int(input("Introduceti un numar natural: "))
   c = int(input("Introduceti cifra: "))
   elimina_cifra(n, c)


if __name__ == "__main__":

   main()

</syntaxhighlight>

Explicații[edit | edit source]

  1. 1 Î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.
  1. 2 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.
  1. 3 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ă.