0787 - Mat Sim 1
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 secundară 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 un 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 ⩽ 100
- elementele matricei vor fi mai mici decât 1.000.000
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 1 5
- 1 6 5 8
- 8 2 8 1
- 9 2 7 3
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line>
- Funcția de validare a datelor de intrare
def validare_date_intrare(n, a):
# parcurgem matricea for i in range(n): for j in range(n): # verificăm dacă există cel putin un element mai mare sau egal cu 1000000 if a[i][j] >= 1000000: # daca există, returnam False return False # dacă toate elementele din matricea a respecta condiția, returnam True return True
- Funcția care construiește matricea simetrică față de diagonala secundară
def construieste_matrice_simetrica(a, n):
# inițializăm matricea b cu 0 b = [[0 for j in range(n)] for i in range(n)] # parcurgem matricea a for i in range(n): for j in range(n): # construim matricea b astfel încat fiecare element de pe poziția (i,j) să fie # egal cu elementul de pe poziția (n-1-j, n-1-i) din matricea a b[i][j] = a[n - 1 - j][n - 1 - i] # returnăm matricea b construită return b
- Funcția principală
if __name__ == '__main__':
# citim n de la tastatură n = int(input()) # inițializăm matricea a cu 0 a = [[0 for j in range(n)] for i in range(n)] # citim elementele matricei a de la tastatură for i in range(n): linie = input().split() for j in range(n): a[i][j] = int(linie[j])
# verificăm dacă datele de intrare sunt valide if validare_date_intrare(n, a): # construim matricea b simetrică față de diagonala secundară b = construieste_matrice_simetrica(a, n) # afișăm mesajul "Datele sunt introduse corect." print("Datele sunt introduse corect.") # afișăm matricea b pe ecran for i in range(n): for j in range(n): print(b[i][j], end=" ") print()
else: # afișăm mesajul "Datele nu corespund restricțiilor impuse." print("Datele nu corespund restricțiilor impuse.")
</syntaxhighlight>