2826 - Duplicare1: Difference between revisions
No edit summary |
Vardai Erwin (talk | contribs) |
||
Line 21: | Line 21: | ||
==Rezolvare== | ==Rezolvare== | ||
<syntaxhighlight lang="python> | <syntaxhighlight lang="python> | ||
def validate_input(n | def validate_input(n): | ||
return 1 <= int(n) <= 10 ** 4 | |||
def duplicare(n): | |||
even_digits = [c for c in n if int(c) % 2 == 0] | |||
if not even_digits: | |||
def duplicare(n | return '-1' | ||
if | |||
return -1 | |||
else: | else: | ||
return | return ''.join([c + c if int(c) % 2 == 0 else c for c in n]) | ||
if __name__ == '__main__': | if __name__ == '__main__': | ||
n = input("Introduceti numarul n: ") | |||
n = | if not validate_input(n): | ||
print("Datele de intrare nu corespund restrictiilor impuse.") | |||
if not validate_input(n | |||
print(" | |||
else: | else: | ||
print("Datele de intrare nu corespund restrictiilor impuse.") | |||
d = duplicare(n) | |||
print(f"Numarul obtinut prin duplicarea cifrelor pare din {n} este: {d}") | print(f"Numarul obtinut prin duplicarea cifrelor pare din {n} este: {d}") | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 18:10, 6 May 2023
Cerința
Subprogramul duplicare are doi parametri, în această ordine:
- n, prin care primește un număr natural (n∈[1,104]);
- d, prin care furnizează numărul obţinut prin duplicarea fiecărei cifre pare a lui n sau -1 dacă acesta nu are nicio cifră pară.
Scrieți definiția completă a subprogramului în Python.
Date de intrare
Programul citește de la tastatură numărul n.
Date de ieșire
Dacă datele sunt introduse corect, pe ecran se va afișa: "Date de intrare valide", apoi pe un rând nou numărul cerut cu cifrele pare duplicate. În cazul în care numărul introdus nu corespunde restricțiilor date, se va afișa "Date de intrare invalide"
Exemplu
- Intrare
- 2380
- Ieșire
- Date de intrare valide
- 2238800
Rezolvare
<syntaxhighlight lang="python> def validate_input(n):
return 1 <= int(n) <= 10 ** 4
def duplicare(n):
even_digits = [c for c in n if int(c) % 2 == 0] if not even_digits: return '-1' else: return .join([c + c if int(c) % 2 == 0 else c for c in n])
if __name__ == '__main__':
n = input("Introduceti numarul n: ") if not validate_input(n): print("Datele de intrare nu corespund restrictiilor impuse.") else: print("Datele de intrare nu corespund restrictiilor impuse.") d = duplicare(n) print(f"Numarul obtinut prin duplicarea cifrelor pare din {n} este: {d}")
</syntaxhighlight>
Explicație
Acest program are două funcții și un bloc de cod principal:
1. Funcția `validate_input` primește doi parametri: `n` și `d`, ambele de tip int. Funcția verifică dacă `n` se află între 1 și 10^4 și dacă `d` se află între -1 și 10^9. Dacă ambele condiții sunt adevărate, funcția returnează True, altfel returnează False.
2. Funcția `duplicare` primește doi parametri: `n` și `d`, ambele de tip int. Funcția parcurge cifrele numărului `n` și, pentru fiecare cifră pară, o adaugă de două ori la `result`. Dacă `n` nu are cifre pare, funcția returnează -1. Altfel, funcția returnează numărul obținut prin duplicarea cifrelor pare.
3. Blocul principal citește un număr întreg `n` de la tastatură, apelează funcția `duplicare` și afișează rezultatul. Dacă datele de intrare sunt invalide (potrivit funcției `validate_input`), se afișează un mesaj de eroare. Dacă `duplicare` returnează -1, se afișează un mesaj care indică că `n` nu are cifre pare, iar în caz contrar se afișează numărul obținut prin duplicarea cifrelor pare.