2826 - Duplicare1: Difference between revisions

From Bitnami MediaWiki
 
(One intermediate revision by the same user not shown)
Line 16: Line 16:
: 2380
: 2380
; Ieșire
; Ieșire
: Date de intrare valide
: Datele de intrare nu corespund restrictiilor impuse.
: 2238800
: 2238800


Line 46: Line 46:


==Explicație==
==Explicație==
Acest program are două funcții și un bloc de cod principal:
Functia "validate_input(n)" este folosita pentru a verifica daca numarul introdus "n" este intre 1 si 10^4. Aceasta functie primeste ca parametru un string "n", pe care il converteste in integer si il compara cu intervalul specificat. Daca numarul nu se incadreaza in acest interval, functia va returna "False", altfel va returna "True".


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.
Functia "duplicare(n)" primeste un numar "n" sub forma de string si cauta cifrele pare din acesta. Daca nu exista nicio cifra para, functia va returna "-1". Daca exista cifre pare, acestea vor fi duplicate, in timp ce cifrele impare vor fi lasate neschimbate. Functia va returna numarul obtinut prin duplicarea cifrelor pare sub forma de string.


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.
Blocul "if name == 'main':" este folosit pentru a verifica daca acest fisier este rulat direct sau importat ca modul. In cazul in care este rulat direct, se va afisa un mesaj de introducere pentru utilizator, iar apoi se va verifica daca numarul introdus este valid folosind functia "validate_input". Daca nu este valid, se va afisa un mesaj corespunzator. Daca numarul este valid, se va apela functia "duplicare" si se va afisa rezultatul obtinut.
 
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.

Latest revision as of 18:12, 6 May 2023

Cerința[edit | edit source]

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[edit | edit source]

Programul citește de la tastatură numărul n.

Date de ieșire[edit | edit source]

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[edit | edit source]

Intrare
2380
Ieșire
Datele de intrare nu corespund restrictiilor impuse.
2238800

Rezolvare[edit | edit source]

<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[edit | edit source]

Functia "validate_input(n)" este folosita pentru a verifica daca numarul introdus "n" este intre 1 si 10^4. Aceasta functie primeste ca parametru un string "n", pe care il converteste in integer si il compara cu intervalul specificat. Daca numarul nu se incadreaza in acest interval, functia va returna "False", altfel va returna "True".

Functia "duplicare(n)" primeste un numar "n" sub forma de string si cauta cifrele pare din acesta. Daca nu exista nicio cifra para, functia va returna "-1". Daca exista cifre pare, acestea vor fi duplicate, in timp ce cifrele impare vor fi lasate neschimbate. Functia va returna numarul obtinut prin duplicarea cifrelor pare sub forma de string.

Blocul "if name == 'main':" este folosit pentru a verifica daca acest fisier este rulat direct sau importat ca modul. In cazul in care este rulat direct, se va afisa un mesaj de introducere pentru utilizator, iar apoi se va verifica daca numarul introdus este valid folosind functia "validate_input". Daca nu este valid, se va afisa un mesaj corespunzator. Daca numarul este valid, se va apela functia "duplicare" si se va afisa rezultatul obtinut.