2288 - Cifra Impara Maxima: Difference between revisions
No edit summary |
No edit summary |
||
(8 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
Sursă: [https://www.pbinfo.ro/probleme/2288/cifraimparamaxima] | |||
== Cerinţa == | == Cerinţa == | ||
Să se scrie un program care să determine cea mai mare cifră impară a unui număr natural citit de la tastatură. | Să se scrie un program care să determine cea mai mare cifră impară a unui număr natural citit de la tastatură. | ||
Line 4: | 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 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 | * 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 | ||
Line 19: | Line 22: | ||
; Ieșire | ; Ieșire | ||
: | : Numărul citit nu conține cifre impare. | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
numar | #2288 | ||
max_cifra_impara = -1 | |||
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.") | |||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 17:50, 5 May 2023
Sursă: [1]
Cerinţa[edit | edit source]
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[edit | edit source]
Programul va citi de la tastatură un număr natural.
Date de ieşire[edit | edit source]
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[edit | edit source]
- 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[edit | edit source]
- Intrare
- 2785
- Ieșire
- Datele introduse sunt corecte.
- 7
- Intrare
- 2064
- Ieșire
- Numărul citit nu conține cifre impare.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 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.")
</syntaxhighlight>