4212 - IncCifPare: Difference between revisions
Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/4212/inccifpare] == Cerința == 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 == Programul citește de la tastatură numărul n. == Date de ieșire == Programul va afișa pe ecran numărul obținut prin creșterea cu 1 a cifrelor pare ale lui n. ==... |
No edit summary |
||
(2 intermediate revisions by the same user not shown) | |||
Line 2: | Line 2: | ||
== Cerința == | == Cerința == | ||
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. | 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 == | == Date de intrare == | ||
Programul citește de la tastatură numărul n. | Programul citește de la tastatură numărul '''n'''. | ||
== Date de ieșire == | == Date de ieșire == | ||
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 == | == Restricții și precizări == | ||
* 0 ≤ n ≤ 1.000.000.000 | * 0 ≤ '''n''' ≤ 1.000.000.000 | ||
== Exemplu == | == Exemplu == | ||
; Intrare | ; Intrare | ||
: 1234 | : 1234 | ||
; Ieșire | ; Ieșire | ||
: "Datele sunt introduse corect." | |||
: 1335 | : 1335 | ||
== Rezolvare == | == Rezolvare == | ||
def | <syntaxhighlight lang="python" line> | ||
n = int | #4212 | ||
def verificare_numar(n: int) -> bool: | |||
return 0 <= n <= 1000000000 | |||
def creste_cifre_pare(n: int) -> int: | |||
r = 0 | r = 0 | ||
p = 1 | p = 1 | ||
Line 26: | Line 33: | ||
p = p * 10 | p = p * 10 | ||
n = n // 10 | n = n // 10 | ||
return r | |||
if __name__ == '__main__': | 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 == | |||
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'''. <br><br>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'''.<br><br>Î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. |
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.