0783 - Diagonale 1

De la Universitas MediaWiki

Cerinţa

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

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

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

  • 1 ⩽ n ⩽ 100
  • elementele matricei vor fi mai mici decât 1.000.000

Exemplu

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

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
#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.")