0991 - Matrice 5

From Bitnami MediaWiki

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 matricei
  • x – matricea
  • k – 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 la n.

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.")
  1. 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)]
  1. 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>