0056 - Numărare Perechi: Difference between revisions
Dragos1234 (talk | contribs) Pagină nouă: Sursa: [https://www.pbinfo.ro/probleme/4273/prodpp] == Cerinţa == Se dă numărul natural nenul '''n'''. Să se determine produsul primelor '''n''' pătrate perfecte nenule. == Date de intrare == Programul citește de la tastatură numărul '''n'''. == Date de ieșire == Programul va afișa pe ecran, mesajul "Datele introduse corespund cerințelor" și pe o linie nouă numărul '''P''' , reprezentând produsul primelor '''n''' pătrate perfecte nenule, în caz contrar prog... |
Dragos1234 (talk | contribs) |
||
(21 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
Sursa: [https://www.pbinfo.ro/probleme/ | Sursa: [https://www.pbinfo.ro/probleme/56/numarareperechi] | ||
== Cerinţa == | == Cerinţa == | ||
Se | 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 == | == Date de intrare == | ||
Programul citește de la tastatură | Programul citește de la tastatură numere întregi. Citirea se încheie la introducerea valorii 0. | ||
== Date de ieșire == | == Date de ieșire == | ||
Programul va afișa pe ecran, mesajul "Datele introduse corespund cerințelor" și pe o linie nouă numărul ''' | 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 == | == Restricţii şi precizări == | ||
* | * numerele citite aparțin intervalului '''(-1.000.000;1.000.000)''' | ||
* valoarea zero, care încheie citirile, nu se va prelucra | |||
== Exemplul 1 == | == Exemplul 1 == | ||
; Intrare | ; Intrare | ||
: 4 | : 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 | ; Ieșire | ||
: Datele corespund | : Datele introduse corespund cerintelor. | ||
: | : 3 | ||
<br> | <br> | ||
== Exemplul 2 == | == Exemplul 2 == | ||
; Intrare | ; Intrare | ||
: | : Introduceți primul număr: 200000000000000000000000000000000000 | ||
; Ieșire | ; Ieșire | ||
: Datele introduse nu corespund cerințelor. | : Datele introduse nu corespund cerințelor. | ||
<br> | <br> | ||
== Rezolvare == | == Rezolvare == | ||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# | #0056 | ||
def | def count_matching_digits(num1, num2): | ||
""" | |||
Returnează numărul de cifre identice dintre cele două numere primite ca argumente. | |||
while | """ | ||
count = 0 | |||
while num2: | |||
if num1 % 10 == num2 % 10: | |||
return | 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). | |||
""" | |||
return | 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> | </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.