
Якщо кількість рядків і стовпців двовимірного масиву збігається, то його ще називають квадратною матрицею. У таких випадках вживають поняття головна діагональ (позначена зеленим кольором) та бічна діаго — наль (позначена сірим кольором) (рис. 9.2).
Головна діагональ
Бічна діагональ
Рис. 9.2. Діагоналі матриці
Елементи, що стоять на головній діагоналі, мають індекси (1, 1), (2, 2), (3, 3), … (і, і). …, (n, n), тобто номер рядка дорівнює номеру стовпця! Еле — менти, що стоять на бічній діагоналі, мають такі індекси (1, n), (2, n–1), (3, n–2), …, (і, n–і+1), (n,1), тобто індекси елементів взаємозалежні за фор — мулою j= n – i+1.
Приклад 9.3.1. Дано натуральні числа n, m та випадкові дійсні числа, що утворюють таблицю A[i, j], де i = 1,2,…, n; j = 1, 2, …, m. Роздрукувати у рядок елементи, що розташовані на бічній діагоналі. Обчислити суму елементів бічної діагоналі.
Нагадаємо, що на бічній діагоналі елементи мають таку властивість: сума номера рядка та номера стовпця дорівнюють розмірності масиву
+1, тобто номер стовпця обчислюється за формулою: j = n-1+i. Тоді програма для розв’язання цієї задачі має такий вигляд: Const n = 5;
Var A: array[1..n,1..n] of real; i, j: integer; Sum:real;
Begin
Randomize;
For i:=1 to n do Begin
For j:=1 to n do begin A[i, j]:=random(100);
Write (A[i, j]:3);
End; writeln; End;
Writeln (‘Бічна діагональ масиву:’);
For i:=1 to n do begin
Write (A[i, n-i+1]:3);
If i + j = n+1 then Sum:=Sum+A[i, j];
End;
Writeln (‘Сума елементів бічної діагоналі =‘,Sum:5);
End.
Із головною діагоналлю працювати ще легше, оскільки умова пошуку елемента на головній діагоналі i=j. Однак якщо потрібно зробити певну дію з елементами, що містяться над діагоналями чи під діагоналями, то умову слід продумати заздалегідь.
Приклад 9.3.2. Дано натуральне число n та випадкові цілі числа, що утворюють таблицю A[i, j], де i = 1,2,…, n; j = 1, 2, …, n. Замінити всі елементи, що містяться вище головної діагоналі, нулями.
Тоді програма для розв’язання цієї задачі має такий вигляд: Const n = 5;
Var A: array[1..n,1..n] of real; i, j: integer; Sum:real;
Begin Randomize;
Writeln(‘Сформований масив’); For i:=1 to n do
Begin
For j:=1 to n do begin A[i, j]:=random(100);
Write (A[i, j]:3); end;
Writeln;
End;
Writeln(‘Трансформований масив’); For i:=1 to n do
Begin
For j:=1 to n do begin
If i<j then A[i, j]:=0; end;
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78