2826 - Duplicare1

From Bitnami MediaWiki
Revision as of 14:24, 6 April 2023 by Cata (talk | contribs) (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...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

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 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>