0668 - Identice 1

De la Universitas MediaWiki

Sursă: [1]

Cerinţa

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

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

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

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

Exemple

Exemplu 1

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

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

Rezolvare

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)

Explicatie

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