2288 - Cifra Impara Maxima: Difference between revisions

From Bitnami MediaWiki
No edit summary
No edit summary
Line 6: Line 6:
Programul va citi de la tastatură un număr natural.
Programul va citi de la tastatură un număr natural.
== Date de ieşire ==
== Date de ieşire ==
Dacă datele sunt introduse corect, pe ecran se va afișa '''"Datele sunt introduse corect."''', apoi se va afișa pe ecran valoarea cerută. în caz contrar, se va afișa pe ecran. '''"Datele nu au fost introduse corect."'''.
Dacă datele introduse sunt corecte, pe ecran se va afișa '''"Datele sunt introduse corect."''', apoi se va afișa cea mai mare cifră impară numărului citit. În caz contrar, se va afișa pe ecran mesajul  '''"Datele nu au fost introduse corect."'''.
== Restricții și precizări ==
== Restricții și precizări ==
* numărul citit va fi mai mic decât 2.000.000.000
* numărul citit va fi mai mic decât 2.000.000.000
Line 26: Line 26:


<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
# Se citeste un numar de la tastatura
#2288
numar = int(input("Introduceti un numar: "))


# Se verifica daca numarul este mai mic decat 2.000.000.000
def verificare_numar(numar):
if numar < 2000000000:
    """
     # Se initializeaza cifra maxima para cu -1
    Verifica daca numarul este un numar natural mai mic decat 2.000.000.000.
    """
    return isinstance(numar, int) and 0 <= numar < 2000000000
 
 
def determina_cifra_maxima_impara(numar):
     """
    Determina cea mai mare cifra impara a unui numar.
    """
     max_cifra_impara = -1
     max_cifra_impara = -1
    # Se itereaza prin fiecare cifra a numarului si se cauta cifra impara maxima
     while numar != 0:
     while numar != 0:
         cifra = numar % 10
         cifra = numar % 10
Line 40: Line 45:
             max_cifra_impara = cifra
             max_cifra_impara = cifra
         numar //= 10
         numar //= 10
    # Daca nu s-a gasit nicio cifra impara, se afiseaza mesajul "Nu exista."
     if max_cifra_impara == -1:
     if max_cifra_impara == -1:
         print("Nu exista.")
         return "Nu exista."
     else:
     else:
         # Altfel, se afiseaza mesajul "Datele sunt introduse corect." si cifra impara maxima
         return max_cifra_impara
        print("Datele sunt introduse corect.")
 
        print(max_cifra_impara)
 
else:
if __name__ == "__main__":
    # Daca numarul este mai mare sau egal cu 2.000.000.000, se afiseaza mesajul "Datele nu au fost introduse corect"
    # Citeste un numar de la tastatura
    print("Datele nu au fost introduse corect")
    numar = input("Introduceti un numar natural: ")
    try:
        numar = int(numar)
        if verificare_numar(numar):
            # Afiseaza mesajul "Datele sunt introduse corect." si cea mai mare cifra impara a numarului
            print("Datele sunt introduse corect.")
            print(determina_cifra_maxima_impara(numar))
        else:
            # Afiseaza mesajul "Datele nu au fost introduse corect."
            print("Datele nu au fost introduse corect.")
    except ValueError:
        # Afiseaza mesajul "Datele nu au fost introduse corect."
        print("Datele nu au fost introduse corect.")




</syntaxhighlight>
</syntaxhighlight>

Revision as of 16:53, 27 April 2023

Sursă: [1]

Cerinţa

Să se scrie un program care să determine cea mai mare cifră impară a unui număr natural citit de la tastatură.

Date de intrare

Programul va citi de la tastatură un număr natural.

Date de ieşire

Dacă datele introduse sunt corecte, pe ecran se va afișa "Datele sunt introduse corect.", apoi se va afișa cea mai mare cifră impară numărului citit. În caz contrar, se va afișa pe ecran mesajul "Datele nu au fost introduse corect.".

Restricții și precizări

  • numărul citit va fi mai mic decât 2.000.000.000
  • dacă numărul citit nu conține cifre impare se va afișa mesajul nu exista

Exemplu

Intrare
2785
Ieșire
7


Intrare
2064
Ieșire
Nu exista.

Rezolvare

<syntaxhighlight lang="python" line>

  1. 2288

def verificare_numar(numar):

   """
   Verifica daca numarul este un numar natural mai mic decat 2.000.000.000.
   """
   return isinstance(numar, int) and 0 <= numar < 2000000000


def determina_cifra_maxima_impara(numar):

   """
   Determina cea mai mare cifra impara a unui numar.
   """
   max_cifra_impara = -1
   while numar != 0:
       cifra = numar % 10
       if cifra % 2 == 1 and cifra > max_cifra_impara:
           max_cifra_impara = cifra
       numar //= 10
   if max_cifra_impara == -1:
       return "Nu exista."
   else:
       return max_cifra_impara


if __name__ == "__main__":

   # Citeste un numar de la tastatura
   numar = input("Introduceti un numar natural: ")
   try:
       numar = int(numar)
       if verificare_numar(numar):
           # Afiseaza mesajul "Datele sunt introduse corect." si cea mai mare cifra impara a numarului
           print("Datele sunt introduse corect.")
           print(determina_cifra_maxima_impara(numar))
       else:
           # Afiseaza mesajul "Datele nu au fost introduse corect."
           print("Datele nu au fost introduse corect.")
   except ValueError:
       # Afiseaza mesajul "Datele nu au fost introduse corect."
       print("Datele nu au fost introduse corect.")


</syntaxhighlight>