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[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>

  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>