0668 - Identice 1

From Bitnami MediaWiki

Sursă: [1]

Cerinţa[edit | edit source]

Se dă o matrice cu n linii și m coloane și elemente numere naturale. Să se determine câte perechi de linii consecutive din matrice sunt identice.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele n m, iar apoi n șiruri cu câte m numere naturale, reprezentând elementele matricei.

Date de ieșire[edit | edit source]

Dacă datele sunt introduse corect, pe ecran se va afișa: "Datele sunt corecte." Programul va afișa pe ecran numărul C numere, reprezentând valoare determinată. În caz contrar, se va afișa pe ecran: "Datele nu sunt comform restricțiilor impuse.".

Restricții și precizări[edit | edit source]

  • 1 ≤ n , m ≤ 100
  • elementele matricei sunt numere naturale mai mici decât 1.000.000

Exemple[edit | edit source]

Exemplu 1[edit | edit source]

Date de intrare
5 3
10 2 5
2 1 4
2 1 4
7 10 9
7 10 9
Date de iesire
2

Explicatie[edit | edit source]

Sunt identice a doua și a treia linie, respectiv a patra și a cincea.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line="1"> def citire_matrice():

   try:
       n = int(input("Introduceti numarul de linii: "))
       m = int(input("Introduceti numarul de coloane: "))
       if m % 2 == 0:
           print("Numarul de coloane trebuie sa fie impar.")
           exit()
       if 1 <= n <= 100 and 1 <= m <= 100:
           print("Datele sunt corecte.")
       else:
           print("Datele nu sunt conform restrictiilor impuse.")
           exit()
   except ValueError:
       print("Trebuie introduse doar numere intregi.")
       exit()
   matrice = []
   for linie in range(n):
       linie_matrice = []
       for coloana in range(m):
           try:
               valoare = int(input(f"Introduceti un numar pentru linia {linie+1}, coloana {coloana+1}: "))
               if valoare <= 1000000:
                   print("Datele sunt corecte.")
                   linie_matrice.append(valoare)
               else:
                   print("Datele nu sunt conform restrictiilor impuse.")
                   exit()
           except ValueError:
               print("Trebuie introduse doar numere intregi.")
               exit()
       matrice.append(linie_matrice)
   return n, m, matrice


def identice(n, m, matrice):

   cnt = 0
   for i in range(n-1):
       if matrice[i] == matrice[i+1]:
           cnt += 1
   print(cnt)


if _name_ == "_main_":

   n, m, matrice = citire_matrice()
   print("Matricea initiala:")
   for linie in matrice:
       print(linie)
   print("Numarul de perechi de linii consecutive identice:")
   identice(n, m, matrice)

</syntaxhighlight>

Explicatie[edit | edit source]

Acest program citeste de la tastatura numerele n si m, apoi citeste o matrice cu n linii si m coloane, formata din numere intregi mai mici decat 1.000.000, verificand in acelasi timp daca datele introduse sunt valide. Dupa ce matricea este citita, programul afiseaza matricea initiala si numarul de perechi de linii consecutive identice din matricea data.

Functia citire_matrice primeste input-ul de la tastatura si creeaza si returneaza matricea corespunzatoare. Verifica daca numarul de coloane este impar si daca valorile introduse se incadreaza in intervalul permis. Dupa ce matricea este citita, aceasta este returnata impreuna cu dimensiunile sale.

Functia identice primeste dimensiunile si matricea si calculeaza numarul de perechi de linii consecutive identice. Parcurge matricea linie cu linie si verifica daca linia curenta si cea urmatoare sunt identice, daca da, adauga unu la numarul de perechi identice. La final afiseaza numarul de perechi identice gasite