0783 - Diagonale 1

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Să se determine suma elementelor de pe cele două diagonale vecine cu diagonala principală.

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 numărul S, reprezentând valoarea calculată.Î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
5
3 1 8 5 4
7 8 5 1 2
2 2 6 7 3
9 8 1 3 6
7 5 3 1 7
Date de ieșire
Datele sunt introduse corect.
30

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line>

def validare_date(n, a):

   # Verifică valoarea lui n
   if not (1 <= n <= 100):
       print("Datele nu corespund restricțiilor impuse.")
       return False
   # Verifică valorile elementelor matricei
   for i in range(n):
       for j in range(n):
           if not (0 <= a[i][j] < 1000000):
               print("Datele nu corespund restricțiilor impuse.")
               return False
   # Datele sunt introduse corect
   return True
  1. Funcția care calculează suma diagonalelor

def calculeaza_suma_diagonalelor(n, a):

   s = 0
   for i in range(1, n):
       s += a[i][i-1] + a[i-1][i]
   return s


if __name__ == '__main__':

   # Citire date de intrare
   n = int(input())
   a = [[int(x) for x in input().split()] for i in range(n)]
   # Verificare date de intrare
   if validare_date(n, a):
       print("\nDatele sunt introduse corect.\n")
       # Calculare si afișare rezultat
       S = calculeaza_suma_diagonalelor(n, a)
       print(S)
   else:
       print("Datele nu corespund restricțiilor impuse.")


</syntaxhighlight>