0991 - Matrice 5

From Bitnami MediaWiki

Cerința[edit | edit source]

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[edit | edit source]

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[edit | edit source]

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[edit | edit source]

  • 1 ≤ n ≤ 100
  • elementele matricei sunt numere naturale mai mici decât 1000
  • liniile matricei sunt numerotate de la 1 la n.

Exemplul 1[edit | edit source]

Input:

4

1 6 3 1

6 1 3 1

1 3 1 6

3 1 6 1

Output:

18

Exemplul 2[edit | edit source]

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[edit | edit source]

<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>