2288 - Cifra Impara Maxima: Diferență între versiuni

De la Universitas MediaWiki
Fără descriere a modificării
 
(Nu s-au afișat 4 versiuni intermediare efectuate de același utilizator)
Linia 6: Linia 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 ==
Programul va afişa pe ecran cea mai mare cifră impară a numărului citit.
Dacă datele introduse sunt corecte, pe ecran se va afișa '''"Datele introduse sunt corecte."''', apoi se va afișa cea mai mare cifră impară numărului citit. În caz contrar, se va afișa pe ecran mesajul  '''"Datele introduse nu sunt corecte."'''.
== 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
* dacă numărul citit nu conține cifre impare se va afișa mesajul nu exista
* dacă numărul citit nu conține cifre impare se va afișa mesajul '''Numărul citit nu conține cifre impare."'''
== Exemplu ==
== Exemplu ==
; Intrare
; Intrare
: 2785
: 2785
; Ieșire
; Ieșire
: Datele introduse sunt corecte.
: 7
: 7


Linia 21: Linia 22:


; Ieșire
; Ieșire
: Nu exista.
: Numărul citit nu conține cifre impare.


== Rezolvare ==
== Rezolvare ==


<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
numar = int(input("Introduceti un numar: "))
#2288
max_cifra_impara = -1


while numar != 0:
def verificare_numar(numar):
    cifra = numar % 10
    """
    if cifra % 2 == 1 and cifra > max_cifra_impara:
    Verifica daca numarul este un numar natural mai mic decat 2.000.000.000.
        max_cifra_impara = cifra
    """
    numar //= 10
    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 = int(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.")


if max_cifra_impara == -1:
    print("Nu exista.")
else:
    print("Datele sunt introduse corect.")
    print(max_cifra_impara)


</syntaxhighlight>
</syntaxhighlight>

Versiunea curentă din 5 mai 2023 17:50

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 introduse sunt corecte.", apoi se va afișa cea mai mare cifră impară numărului citit. În caz contrar, se va afișa pe ecran mesajul "Datele introduse nu sunt corecte.".

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 Numărul citit nu conține cifre impare."

Exemplu

Intrare
2785
Ieșire
Datele introduse sunt corecte.
7


Intrare
2064
Ieșire
Numărul citit nu conține cifre impare.

Rezolvare

#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 = int(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.")