0056 - Numărare Perechi: Difference between revisions
Dragos1234 (talk | contribs) |
Dragos1234 (talk | contribs) |
||
(3 intermediate revisions by the same user not shown) | |||
Line 24: | Line 24: | ||
: Introduceți următorul număr: 0 | : Introduceți următorul număr: 0 | ||
; Ieșire | ; Ieșire | ||
: | : Datele introduse corespund cerintelor. | ||
: 3 | |||
<br> | <br> | ||
Line 37: | Line 38: | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
#0056 | #0056 | ||
def | def count_matching_digits(num1, num2): | ||
""" | |||
Returnează numărul de cifre identice dintre cele două numere primite ca argumente. | |||
""" | |||
count = 0 | |||
while num2: | |||
if num1 % 10 == num2 % 10: | |||
count += 1 | |||
num1 = num2 | |||
num2 = int(input("Introduceți un număr: ")) | |||
if num2 == 0: | |||
break | |||
return count | |||
def | def validate_input(num): | ||
""" | """ | ||
Verifică dacă numărul dat ca argument aparține intervalului (-1.000.000; 1.000.000). | |||
""" | """ | ||
num = | if num == 0: | ||
print("Datele introduse nu corespund cerintelor.") | print("Datele introduse nu corespund cerintelor.") | ||
exit() | exit() | ||
return | return False | ||
if num < -1000000 or num > 1000000: | |||
print("Datele introduse nu corespund cerintelor.") | |||
exit() | |||
return False | |||
return True | |||
if __name__ == "__main__": | |||
num1 = int(input("Introduceți primul număr: ")) | |||
while not validate_input(num1): | |||
num1 = int(input("Introduceți primul număr: ")) | |||
num1 = | |||
num2 = int(input("Introduceți al doilea număr: ")) | |||
while not validate_input(num2): | |||
num2 = int(input("Introduceți al doilea număr: ")) | |||
num2 = | |||
count = | count = count_matching_digits(num1, num2) | ||
print(f"Datele introduse corespund cerintelor.\n{count}") | |||
print("Datele corespund cerintelor. | |||
</syntaxhighlight> | |||
== Explicatie rezolvare == | |||
Acest program conține două funcții și o secțiune principală de cod care le folosește. | |||
1. Funcția "count_matching_digits(num1, num2)" primește doi parametri de tip întreg și returnează numărul de cifre identice dintre cele două numere. Funcția utilizează un ciclu "while" pentru a parcurge cifrele din ambele numere. În fiecare iterație, se verifică dacă ultima cifră a fiecărui număr este identică și, dacă da, se adaugă 1 la contorul "count". Apoi, ultima cifră a fiecărui număr este eliminată prin împărțirea la 10, până când numărul doi ajunge la zero. La final, funcția returnează valoarea contorului "count". | |||
2. Funcția "validate_input(num)" primește un parametru de tip întreg și verifică dacă numărul se încadrează în intervalul (-1.000.000, 1.000.000). Dacă numărul nu se încadrează în interval, funcția afișează un mesaj de eroare și oprește programul utilizând funcția "exit()". În caz contrar, funcția returnează valoarea "True". | |||
În secțiunea principală a programului, utilizatorul introduce două numere folosind funcția "input()". Apoi, fiecare număr este validat utilizând funcția "validate_input(num)" și, dacă numerele sunt valide, funcția "count_matching_digits(num1, num2)" este apelată pentru a calcula numărul de cifre comune între cele două numere. Dacă cele două numere sunt invalide, programul va continua să solicite introducerea unor numere valide utilizând o buclă "while". La final, programul afișează numărul de cifre comune. | |||
Latest revision as of 17:49, 30 April 2023
Sursa: [1]
Cerinţa[edit | edit source]
Se citesc numere de la tastatură până la apariția lui zero. Să se determine câte perechi de elemente citite consecutiv se termină cu aceeași cifră.
Date de intrare[edit | edit source]
Programul citește de la tastatură numere întregi. Citirea se încheie la introducerea valorii 0.
Date de ieșire[edit | edit source]
Programul va afișa pe ecran, mesajul "Datele introduse corespund cerințelor" și pe o linie nouă programul afișează pe ecran numărul C, reprezentând numărul de perechi citite care respectă condiția cerută. În caz contrar programul va afișa pe o linie noua mesajul "Datele introduse nu corespund cerintelor."
Restricţii şi precizări[edit | edit source]
- numerele citite aparțin intervalului (-1.000.000;1.000.000)
- valoarea zero, care încheie citirile, nu se va prelucra
Exemplul 1[edit | edit source]
- Intrare
- Introduceți primul număr: 15
- Introduceți al doilea număr: 63
- Introduceți următorul număr: 403
- Introduceți următorul număr: 123
- Introduceți următorul număr: 55
- Introduceți următorul număr: 15
- Introduceți următorul număr: 4
- Introduceți următorul număr: 0
- Ieșire
- Datele introduse corespund cerintelor.
- 3
Exemplul 2[edit | edit source]
- Intrare
- Introduceți primul număr: 200000000000000000000000000000000000
- Ieșire
- Datele introduse nu corespund cerințelor.
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- 0056
def count_matching_digits(num1, num2):
""" Returnează numărul de cifre identice dintre cele două numere primite ca argumente. """ count = 0 while num2: if num1 % 10 == num2 % 10: count += 1 num1 = num2 num2 = int(input("Introduceți un număr: ")) if num2 == 0: break return count
def validate_input(num):
""" Verifică dacă numărul dat ca argument aparține intervalului (-1.000.000; 1.000.000). """ if num == 0: print("Datele introduse nu corespund cerintelor.") exit() return False if num < -1000000 or num > 1000000: print("Datele introduse nu corespund cerintelor.") exit() return False return True
if __name__ == "__main__":
num1 = int(input("Introduceți primul număr: ")) while not validate_input(num1): num1 = int(input("Introduceți primul număr: "))
num2 = int(input("Introduceți al doilea număr: ")) while not validate_input(num2): num2 = int(input("Introduceți al doilea număr: "))
count = count_matching_digits(num1, num2) print(f"Datele introduse corespund cerintelor.\n{count}")
</syntaxhighlight>
Explicatie rezolvare[edit | edit source]
Acest program conține două funcții și o secțiune principală de cod care le folosește.
1. Funcția "count_matching_digits(num1, num2)" primește doi parametri de tip întreg și returnează numărul de cifre identice dintre cele două numere. Funcția utilizează un ciclu "while" pentru a parcurge cifrele din ambele numere. În fiecare iterație, se verifică dacă ultima cifră a fiecărui număr este identică și, dacă da, se adaugă 1 la contorul "count". Apoi, ultima cifră a fiecărui număr este eliminată prin împărțirea la 10, până când numărul doi ajunge la zero. La final, funcția returnează valoarea contorului "count".
2. Funcția "validate_input(num)" primește un parametru de tip întreg și verifică dacă numărul se încadrează în intervalul (-1.000.000, 1.000.000). Dacă numărul nu se încadrează în interval, funcția afișează un mesaj de eroare și oprește programul utilizând funcția "exit()". În caz contrar, funcția returnează valoarea "True".
În secțiunea principală a programului, utilizatorul introduce două numere folosind funcția "input()". Apoi, fiecare număr este validat utilizând funcția "validate_input(num)" și, dacă numerele sunt valide, funcția "count_matching_digits(num1, num2)" este apelată pentru a calcula numărul de cifre comune între cele două numere. Dacă cele două numere sunt invalide, programul va continua să solicite introducerea unor numere valide utilizând o buclă "while". La final, programul afișează numărul de cifre comune.