4212 - IncCifPare: Difference between revisions
No edit summary |
No edit summary |
||
Line 14: | Line 14: | ||
: 1234 | : 1234 | ||
; Ieșire | ; Ieșire | ||
: "Datele sunt introduse corect." | |||
: 1335 | : 1335 | ||
== Rezolvare == | == Rezolvare == | ||
Line 39: | Line 40: | ||
print("Datele nu corespund restricțiilor impuse.") | print("Datele nu corespund restricțiilor impuse.") | ||
exit() | exit() | ||
print("Datele introduse | print("Datele sunt introduse corect.") | ||
rezultat = creste_cifre_pare(n) | rezultat = creste_cifre_pare(n) | ||
print(f"Numarul obtinut este: {rezultat}") | print(f"Numarul obtinut este: {rezultat}") |
Latest revision as of 17:47, 27 April 2023
Sursa: [1]
Cerința[edit | edit source]
Să se scrie un program care citește un număr natural n și care crește cu 1 valoarea cifrelor pare. De exemplu, dacă n=1234 atunci se va obține numărul 1335, iar dacă n=135 atunci numărul rămâne neschimbat.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n.
Date de ieșire[edit | edit source]
Dacă datele introduse sunt corecte, pe ecran se va afișa mesajul: "Datele sunt introduse corect.", apoi programul va afișa numărul obținut prin creșterea cu 1 a cifrelor pare ale lui n. În cazul în care datele nu respectă restricțiile, se va afișa pe ecran: "Datele nu corespund restricțiilor impuse."'.
Restricții și precizări[edit | edit source]
- 0 ≤ n ≤ 1.000.000.000
Exemplu[edit | edit source]
- Intrare
- 1234
- Ieșire
- "Datele sunt introduse corect."
- 1335
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 4212
def verificare_numar(n: int) -> bool:
return 0 <= n <= 1000000000
def creste_cifre_pare(n: int) -> int:
r = 0 p = 1 while n > 0: cifra = n % 10 if cifra % 2 == 0: cifra += 1 r += cifra * p p = p * 10 n = n // 10 return r
if __name__ == '__main__':
n = int(input("Introduceti un numar natural: ")) if not verificare_numar(n): print("Datele nu corespund restricțiilor impuse.") exit() print("Datele sunt introduse corect.") rezultat = creste_cifre_pare(n) print(f"Numarul obtinut este: {rezultat}")
</syntaxhighlight>
Explicație rezolvare[edit | edit source]
Funcția verificare_numar primește un parametru n și returnează True dacă n este un număr întreg între 0 și 1000000000 (conform restricțiilor din cerință), altfel returnează False.
Funcția creste_cifre_pare primește un număr întreg n și folosește o buclă while pentru a parcurge cifrele lui de la dreapta la stânga. Pentru fiecare cifră, se verifică dacă este pară și, dacă este, se crește cu 1. Apoi, cifra este adunată la rezultatul r, care se actualizează în fiecare iterație prin înmulțirea cu p, care reprezintă puterea de 10 corespunzătoare poziției curente a cifrei în numărul inițial. La final, funcția returnează r.
În funcția main, utilizatorul este întâmpinat cu un mesaj de introducere și se citește numărul n de la tastatură folosind input. Apoi, se verifică dacă n este valid folosind verificare_numar. Dacă nu este, se afișează un mesaj de eroare și programul se încheie folosind exit(). Dacă este valid, se calculează numărul obținut prin apelul funcției creste_cifre_pare și se afișează pe ecran folosind print.