0762 - Identice 2
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 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, 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
- 6 3
- 10 2 5
- 2 1 4
- 10 2 5
- 7 10 9
- 10 2 5
- 2 1 4
- Date de iesire
- 4
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 identice2(n, m, matrice):
cnt = 0 for i in range(n - 1): for k in range(i + 1, n): ok = all(matrice[i][j] == matrice[k][j] for j in range(m)) if ok: 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:") identice2(n, m, matrice)
</syntaxhighlight>
Explicații[edit | edit source]
Acest cod reprezintă o soluție pentru problema de a determina câte perechi de linii consecutive identice există într-o matrice dată.
Funcția citire_matrice() se ocupă de citirea datelor de intrare de la tastatură și returnează numărul de linii și coloane ale matricei, precum și matricea propriu-zisă. Mai întâi se verifică dacă numărul de coloane este impar (conform cerințelor problemei) și se validează datele de intrare (numerele de linii și coloane trebuie să fie cuprinse între 1 și 100, iar elementele matricei să fie numere naturale mai mici decât 1.000.000).
Funcția identice2() primește ca parametri numărul de linii și coloane ale matricei și matricea însăși. Apoi, folosind două bucle for, se compară fiecare pereche de linii din matrice (exceptând cele cu aceeași poziție) și se verifică dacă sunt identice. Pentru a verifica acest lucru, se folosește funcția all() împreună cu o expresie generatoare, care verifică dacă elementele de pe fiecare poziție a celor două linii sunt egale. Dacă da, se incrementează un contor cnt. La final, funcția afișează valoarea acestui contor.
În funcția main(), se apelează mai întâi funcția citire_matrice() pentru a obține datele de intrare. Apoi, se afișează matricea inițială și se apelează funcția identice2() pentru a determina numărul de perechi de linii consecutive identice