0991 - Matrice 5
Cerința
Se dă o matrice pătratică cu n
linii și n
coloane, numerotate de la 1
la n
și elemente numere naturale. Să se determine suma elementelor aflate strict deasupra diagonalei secundare a matricei.
Se va defini și folosi subprogramul sub
, cu 3
parametri:
n
– dimensiunea matriceix
– matriceak
– un număr natural,1 < k ≤ 2*n
care va returna suma tuturor elementelor aij
din matrice pentru care i + j = k
.
!!!Variabila k nu va fi folosită deloc. Programul va afișa doar suma elementelor de pe diagonala secundară.
Date de intrare
Fișierul de intrare matriceIN.txt
conține pe prima linie numărul n
, iar următoarele n
linii câte n
numere naturale, reprezentând elementele matricei.
Date de ieșire
Fișierul de ieșire matriceOUT.txt
va conține pe prima linie suma determinată. În cazul în care restricțiile nu sunt îndeplinite, se va afișa un mesaj corespunzător.
Restricții și precizări
1 ≤ n ≤ 100
- elementele matricei sunt numere naturale mai mici decât
1000
- liniile matricei sunt numerotate de la
1
lan
.
Exemplul 1
Input:
4
1 6 3 1
6 1 3 1
1 3 1 6
3 1 6 1
Output:
18
Exemplul 2
Input:
121
1 6 3 1
6 1 3 1
1 3 1 6
3 1 6 1
Output consola:
n trebuie să fie între 1 și 100 inclusiv.
Rezolvare
<syntaxhighlight lang="python3" line="1"> def sub(n, x, k=0):
if not check_constraints(n,matrix): return suma = 0 for i in range(0, n-1): for j in range(0, n-1-i): suma += x[i][j] return suma
def check_constraints(n, matrix):
if not(1 <= n <= 100): print("n trebuie să fie între 1 și 100 inclusiv.") for row in matrix: for elem in row: if elem >= 1000: print("Elementele matricei trebuie să fie mai mici decât 1000.")
- Citirea datelor de intrare
with open("matriceIN.txt", "r") as fin:
n = int(fin.readline()) matrix = [list(map(int, fin.readline().split())) for _ in range(n)]
- Calculul si afisarea sumei elementelor deasupra diagonalei secundare in fisierul de iesire
with open("matriceOUT.txt", "w") as fout:
fout.write(str(sub(n,matrix)))
</syntaxhighlight>