0371 - Numarare: Difference between revisions

From Bitnami MediaWiki
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
# 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
# Validam numarul de numere
while True:
while True:
     try:
     try:
        nr_de_numere = int(nr_de_numere)
         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
# 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:
            num = int(num)
             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
# 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
# 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
     # 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
     # 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
     # 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
# 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

Se citesc n numere naturale. Determinați câte perechi de numere citite consecutiv au aceeași sumă a cifrelor.

Date de intrare

Programul citește de la tastatură un număr natural, iar apoi acel numar de numere naturale.

Date de ieșire

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

  • 1 ≤ n ≤ 100
  • cele n numere citite vor avea cel mult 9 cifre

Exemplu

Intrare
5
176 293 52421 91 424
Ieșire
3

Explicație

Cele 3 perechi sunt: 176 293, 293 52421, 91 424.

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>

  1. Citim numarul de numere

nr_de_numere = int(input("Introduceti numarul de numere: "))

  1. 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: "))
  1. 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)
  1. Initializam un contor pentru perechile de numere cu aceeasi suma a cifrelor

pair_count = 0

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