0371 - Numarare: Difference between revisions
Am creat de la zero. |
|||
Line 25: | Line 25: | ||
== Rezolvare == | == Rezolvare == | ||
=== Rezolvare ver. 1 === | |||
<syntaxhighlight lang="python" line> | |||
def citeste_nr_de_numere(): | |||
while True: | |||
try: | |||
nr_de_numere = int(input("Introduceti numarul de numere: ")) | |||
if nr_de_numere < 1 or nr_de_numere > 100: | |||
raise ValueError("Numarul de numere trebuie sa fie intre 1 si 100.") | |||
return nr_de_numere | |||
except ValueError as e: | |||
print(e) | |||
print("Introduceti un numar valid intre 1 si 100.") | |||
def valideaza_numar(num): | |||
if num < 0 or num > 999999999: | |||
raise ValueError("Fiecare numar trebuie sa fie un numar natural cu cel mult 9 cifre.") | |||
def citeste_lista_numere(nr_de_numere): | |||
numere = [] | |||
for i in range(nr_de_numere): | |||
while True: | |||
try: | |||
num = int(input("Introduceti numarul {}: ".format(i + 1))) | |||
valideaza_numar(num) | |||
numere.append(num) | |||
break | |||
except ValueError as e: | |||
print(e) | |||
print("Introduceti un numar valid pentru numarul {}: ".format(i + 1)) | |||
return numere | |||
def numara_perechi_cu_aceeasi_suma_cifre(numere): | |||
pair_count = 0 | |||
for i in range(1, len(numere)): | |||
suma1 = sum(int(digit) for digit in str(numere[i - 1])) | |||
suma2 = sum(int(digit) for digit in str(numere[i])) | |||
if suma1 == suma2: | |||
pair_count += 1 | |||
return pair_count | |||
if __name__ == '__main__': | |||
nr_de_numere = citeste_nr_de_numere() | |||
numere = citeste_lista_numere(nr_de_numere) | |||
pair_count = numara_perechi_cu_aceeasi_suma_cifre(numere) | |||
print("Numarul de perechi de numere cu aceeasi suma a cifrelor este: {}".format(pair_count)) | |||
</syntaxhighlight> | |||
=== Rezolvare ver. 2 === | |||
<syntaxhighlight lang="python" line> | <syntaxhighlight lang="python" line> | ||
# | # Citim numarul de numere | ||
nr_de_numere = input("Introduceti numarul de numere: ") | nr_de_numere = int(input("Introduceti numarul de numere: ")) | ||
# | # Validam numarul de numere | ||
while True: | while True: | ||
try: | try: | ||
if nr_de_numere < 1 or nr_de_numere > 100: | if nr_de_numere < 1 or nr_de_numere > 100: | ||
raise ValueError("Numarul de numere trebuie sa fie intre 1 si 100.") | raise ValueError("Numarul de numere trebuie sa fie intre 1 si 100.") | ||
Line 39: | Line 89: | ||
except ValueError as e: | except ValueError as e: | ||
print(e) | print(e) | ||
nr_de_numere = input("Introduceti un numar valid intre 1 si 100: ") | nr_de_numere = int(input("Introduceti un numar valid intre 1 si 100: ")) | ||
# | # Citim lista de numere | ||
numere = [] | numere = [] | ||
for i in range(nr_de_numere): | for i in range(nr_de_numere): | ||
num = input("Introduceti numarul {}: ".format(i + 1)) | num = int(input("Introduceti numarul {}: ".format(i + 1))) | ||
while True: | while True: | ||
try: | try: | ||
if num < 0 or num > 999999999: | if num < 0 or num > 999999999: | ||
raise ValueError("Fiecare numar trebuie sa fie un numar natural cu cel mult 9 cifre.") | raise ValueError("Fiecare numar trebuie sa fie un numar natural cu cel mult 9 cifre.") | ||
Line 53: | Line 102: | ||
except ValueError as e: | except ValueError as e: | ||
print(e) | print(e) | ||
num = input("Introduceti un numar valid pentru numarul {}: ".format(i + 1)) | num = int(input("Introduceti un numar valid pentru numarul {}: ".format(i + 1))) | ||
numere.append(num) | numere.append(num) | ||
# | # Initializam un contor pentru perechile de numere cu aceeasi suma a cifrelor | ||
pair_count = 0 | pair_count = 0 | ||
# | # Parcurgem lista de numere si verificam perechile consecutive | ||
for i in range(1, nr_de_numere): | for i in range(1, nr_de_numere): | ||
# | # Calculam suma cifrelor primului numar din pereche | ||
suma1 = sum(int(digit) for digit in str(numere[i - 1])) | suma1 = sum(int(digit) for digit in str(numere[i - 1])) | ||
# | # Calculam suma cifrelor celui de-al doilea numar din pereche | ||
suma2 = sum(int(digit) for digit in str(numere[i])) | suma2 = sum(int(digit) for digit in str(numere[i])) | ||
# | # Daca cele doua sume sunt egale, incrementam contorul | ||
if suma1 == suma2: | if suma1 == suma2: | ||
pair_count += 1 | pair_count += 1 | ||
# | # Afisam numarul de perechi cu aceeasi suma a cifrelor | ||
print("Numarul de perechi de numere cu aceeasi suma a cifrelor este: {}".format(pair_count)) | print("Numarul de perechi de numere cu aceeasi suma a cifrelor este: {}".format(pair_count)) | ||
</syntaxhighlight> | </syntaxhighlight> |
Latest revision as of 10:56, 16 May 2023
Sursa: [1]
Cerinţa[edit | edit source]
Se citesc n numere naturale. Determinați câte perechi de numere citite consecutiv au aceeași sumă a cifrelor.
Date de intrare[edit | edit source]
Programul citește de la tastatură un număr natural, iar apoi acel numar de numere naturale.
Date de ieșire[edit | edit source]
Programul afișează pe ecran numărul de perechi de numere citite consecutiv care au aceeași sumă a cifrelor.
Restricţii şi precizări[edit | edit source]
- 1 ≤ n ≤ 100
- cele n numere citite vor avea cel mult 9 cifre
Exemplu[edit | edit source]
- Intrare
- 5
- 176 293 52421 91 424
- Ieșire
- 3
Explicație[edit | edit source]
Cele 3 perechi sunt: 176 293, 293 52421, 91 424.
Rezolvare[edit | edit source]
Rezolvare ver. 1[edit | edit source]
<syntaxhighlight lang="python" line>
def citeste_nr_de_numere():
while True: try: nr_de_numere = int(input("Introduceti numarul de numere: ")) if nr_de_numere < 1 or nr_de_numere > 100: raise ValueError("Numarul de numere trebuie sa fie intre 1 si 100.") return nr_de_numere except ValueError as e: print(e) print("Introduceti un numar valid intre 1 si 100.")
def valideaza_numar(num):
if num < 0 or num > 999999999: raise ValueError("Fiecare numar trebuie sa fie un numar natural cu cel mult 9 cifre.")
def citeste_lista_numere(nr_de_numere):
numere = [] for i in range(nr_de_numere): while True: try: num = int(input("Introduceti numarul {}: ".format(i + 1))) valideaza_numar(num) numere.append(num) break except ValueError as e: print(e) print("Introduceti un numar valid pentru numarul {}: ".format(i + 1)) return numere
def numara_perechi_cu_aceeasi_suma_cifre(numere):
pair_count = 0 for i in range(1, len(numere)): suma1 = sum(int(digit) for digit in str(numere[i - 1])) suma2 = sum(int(digit) for digit in str(numere[i])) if suma1 == suma2: pair_count += 1 return pair_count
if __name__ == '__main__':
nr_de_numere = citeste_nr_de_numere() numere = citeste_lista_numere(nr_de_numere) pair_count = numara_perechi_cu_aceeasi_suma_cifre(numere) print("Numarul de perechi de numere cu aceeasi suma a cifrelor este: {}".format(pair_count))
</syntaxhighlight>
Rezolvare ver. 2[edit | edit source]
<syntaxhighlight lang="python" line>
- Citim numarul de numere
nr_de_numere = int(input("Introduceti numarul de numere: "))
- Validam numarul de numere
while True:
try: if nr_de_numere < 1 or nr_de_numere > 100: raise ValueError("Numarul de numere trebuie sa fie intre 1 si 100.") break except ValueError as e: print(e) nr_de_numere = int(input("Introduceti un numar valid intre 1 si 100: "))
- Citim lista de numere
numere = [] for i in range(nr_de_numere):
num = int(input("Introduceti numarul {}: ".format(i + 1))) while True: try: if num < 0 or num > 999999999: raise ValueError("Fiecare numar trebuie sa fie un numar natural cu cel mult 9 cifre.") break except ValueError as e: print(e) num = int(input("Introduceti un numar valid pentru numarul {}: ".format(i + 1))) numere.append(num)
- Initializam un contor pentru perechile de numere cu aceeasi suma a cifrelor
pair_count = 0
- Parcurgem lista de numere si verificam perechile consecutive
for i in range(1, nr_de_numere):
# Calculam suma cifrelor primului numar din pereche suma1 = sum(int(digit) for digit in str(numere[i - 1]))
# Calculam suma cifrelor celui de-al doilea numar din pereche suma2 = sum(int(digit) for digit in str(numere[i]))
# Daca cele doua sume sunt egale, incrementam contorul if suma1 == suma2: pair_count += 1
- Afisam numarul de perechi cu aceeasi suma a cifrelor
print("Numarul de perechi de numere cu aceeasi suma a cifrelor este: {}".format(pair_count))
</syntaxhighlight>