2826 - Duplicare1: Difference between revisions
Pagină nouă: ==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. ==Exemplu== Dacă n=2380, după apel d=2238800. ==Explicație== Funcția duplicare primește ca parametri un număr natural n și un număr d, prin... |
Cuceu Andrei (talk | contribs) No edit summary |
||
Line 5: | Line 5: | ||
* 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ă. | * 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. | Scrieți definiția completă a subprogramului în Python. | ||
==Date de intrare== | |||
*'''n''': un număr natural între '''1 și 10^4 '''inclusiv. | |||
==Date de ieșire== | |||
*'''d''': un număr întreg reprezentând rezultatul duplicării cifrelor pare din '''n'''. Dacă '''n''' nu are cifre pare, '''d '''va fi '''-1'''. | |||
==Exemplu== | ==Exemplu== |
Revision as of 18:00, 30 April 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
- n: un număr natural între 1 și 10^4 inclusiv.
Date de ieșire
- d: un număr întreg reprezentând rezultatul duplicării cifrelor pare din n. Dacă n nu are cifre pare, d va fi -1.
Exemplu
Dacă n=2380, după apel d=2238800.
Explicație
Funcția duplicare primește ca parametri un număr natural n și un număr d, prin care se furnizează valoarea calculată. Funcția parcurge cifrele numărului n și adaugă în numărul rezultat fie cifra respectivă de două ori (dacă este pară), fie o singură dată (dacă este impară). Dacă nu există nicio cifră pară în numărul n, funcția returnează -1.
Rezolvare
<syntaxhighlight lang="python> def validate_input(n: int, d: int) -> bool:
# Verificăm dacă n este între 1 și 10^4 if n < 1 or n > 10**4: return False # Verificăm dacă d este între -1 și 10^9 if d < -1 or d > 10**9: return False return True
def duplicare(n: int, d: int) -> int:
# Initializăm numărul rezultat cu 0 result = 0 # Parcurgem cifrele numărului n while n > 0: # Extragerea ultimei cifre din n cifra = n % 10 # Dacă cifra este pară, o adăugăm de două ori în numărul rezultat if cifra % 2 == 0: result = result * 100 + cifra * 10 + cifra else: result = result * 10 + cifra # Trecem la următoarea cifră n //= 10 # Dacă nu am adăugat nicio cifră pară, returnăm -1 if result == 0: return -1 else: return result
def main():
# Citim numarul n de la tastatura n = int(input("Introduceti numarul n: "))
# Apelam subprogramul duplicare si afisam rezultatul d = duplicare(n) if d == -1: print("Numarul n nu are cifre pare") else: print(f"Numarul obtinut prin duplicarea cifrelor pare din {n} este: {d}")
if __name__ == '__main__':
main()
</syntaxhighlight>