0786 - Mat Sim
Cerinţa[edit | edit source]
Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Să se construiască o matrice care să fie simetrica față de diagonala principală a matricei date.
Date de intrare[edit | edit source]
Programul citește de la tastatură numărul n, iar apoi n*n numere naturale, separate prin spaţii, reprezentând elementele matricei, linie cu linie.
Date de ieşire[edit | edit source]
Dacă datele sunt introduse corect,pe ecran se va afișa :"Datele sunt introduse corect.",apoi pe un rând nou elementele matricei construite, câte o linie a matricei pe o linie a ecranului, elementele de pe o linie fiind separate prin câte un spațiu.În cazul contrar,se va afișa pe ecran "Datele nu corespund restricțiilor impuse.".
Restricții și precizări[edit | edit source]
- 1 ⩽ n ⩽ 20
- elementele matricei vor fi mai mici decât 1.000.000
- două matrice A și B sunt simetrice față de diagonala principală dacă A[i,j]=B[j,i], pentru orice i,j. principală sunt nenule
Exemplu[edit | edit source]
- Date de intrare
- 4
- 3 1 8 5
- 7 8 5 1
- 2 2 6 7
- 9 8 1 3
- Date de ieșire
- Datele sunt introduse corect.
- 3 7 2 9
- 1 8 2 8
- 8 5 6 1
- 5 1 7 3
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- Funcția care verifică dacă datele introduse corespund restricțiilor impuse
def valideaza_matrice(matrice):
for i in range(n): for j in range(n): if matrice[i][j] >= 1000000: return False return True
def construieste_matrice_simetrica(matrice):
if not valideaza_matrice(matrice): return None # Construiește matricea simetrică matrice_simetrica = [[0 for j in range(n)] for i in range(n)] for i in range(n): for j in range(n): matrice_simetrica[i][j] = matrice[j][i] return matrice_simetrica
- Funcția principală
if __name__ == '__main__':
# Citirea datelor de la tastatură n = int(input()) matrice = [[0 for j in range(n)] for i in range(n)] for i in range(n): linie = input().split() for j in range(n): matrice[i][j] = int(linie[j])
# Construirea și afișarea matricei simetrice matrice_simetrica = construieste_matrice_simetrica(matrice) if matrice_simetrica is not None: for i in range(n): for j in range(n): print(matrice_simetrica[i][j], end=" ") print() print("Datele sunt introduse corect.") else: print("Datele nu corespund restricțiilor impuse.")
</syntaxhighlight>