0313 - Diagonale
Cerinţa[edit | edit source]
Se dă o matrice cu n linii şi n coloane şi elemente numere naturale. Calculaţi diferenţa în valoare absolută dintre sumele elementelor de pe cele două diagonale.
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 D, 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 ⩽ 20
- elementele matricei vor fi mai mici decât 10000
Exemplu[edit | edit source]
- Intrare
- 4
- 8 3 3 7
- 1 1 6 5
- 8 7 1 1
- 9 8 7 1
- Ieșire
- Datele sunt introduse corect.
- 18
Explicație[edit | edit source]
Sumele elementelor pe cele două diagonale sunt: 11 şi 29. Diferenţa în valoare absolută este: 18
Rezolvare[edit | edit source]
<syntaxhighlight lang="python" line> from typing import List
def validare_date(n: int, matrice: List[List[int]]) -> bool:
# Verifică dacă dimensiunea matricei este în intervalul corect if n < 1 or n > 20: return False # Verifică dacă toate elementele matricei sunt în intervalul corect for rand in matrice: for elem in rand: if elem < 0 or elem >= 10000: return False # Returnează True dacă matricea este validă return True
def calculeaza_diferenta_diagonalelor(n: int, matrice: List[List[int]]) -> int:
# Inițializează sumele diagonalelor cu 0 suma_dp, suma_ds = 0, 0 # Calculează sumele elementelor de pe cele două diagonale for i in range(n): for j in range(n): if i == j: suma_dp += matrice[i][j] if i + j == n - 1: suma_ds += matrice[i][j] # Returnează diferența dintre cele două sume, calculată ca valoare absolută return abs(suma_dp - suma_ds)
if __name__ == '__main__':
# Citește dimensiunea matricei de la tastatură n = int(input()) # Inițializează matricea cu valorile citite de la tastatură matrice = [] for i in range(n): rand = list(map(int, input().split())) matrice.append(rand) # Verifică dacă matricea este validă și afișează mesajul corespunzător if validare_date(n, matrice): print("Datele sunt introduse corect.") # Dacă matricea este validă, calculează diferența dintre diagonale și o afișează D = calculeaza_diferenta_diagonalelor(n, matrice) print(D) else: print("Datele nu corespund restrictiilor impuse.")
</syntaxhighlight>