Верхній
та нижній трикутник квадратної матриці
a1 1
|
а12
|
а13
|
а14
|
а15
|
…
|
а1n-1
|
a1n
|
а2 1
|
а2 2
|
a23
|
a24
|
a25
|
…
|
a2n-1
|
a2n
|
а31
|
а3 2
|
a3 3
|
а34
|
а3 4
|
…
|
a3n-1
|
a3n
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
…
|
аn-2 1
|
аn-2 2
|
аn-2 3
|
аn-2 3
|
аn-2 3
|
.. …
|
an-2n-1
|
an-2n
|
аn-1 1
|
аn-1 2
|
аn-1 3
|
аn-1 3
|
аn-1 5
|
…
|
an-1n-1
|
an-1n
|
аn1
|
аn2
|
аn3
|
аn4
|
аn5
|
…
|
аnn-1
|
ann
|
Для
верхнього трикутника квадратної матриці розміром nxn
номер
рядка і змінюється від 1 до n,
номер
стовпця j змінюється від і до n.
Кількість
елементів в черговому рядку верхнього трикутника змінюється від і та визначається
за формулою
kvi = n – i +1.
Для
нижнього трикутника квадратної матриці розміром nxn номер рядка і змінюється від 2 до n, а номер стовпця j змінюється
від 1 до i-1.
Кількість
елементів в черговому рядку нижнього трикутника змінюється від і та визначається
за формулою
khi = i -1.
Ці
закономірності використовуються для створення алгоритмів на квадратних
матрицях.
Перетворення двомірного масиву(таблиці)
в лінійний масив(рядок) мовою Pascal.
Приклад розташування елементів та їх індексів у
двовимірного масиву A[4xm]:
a[1;1]
|
a[1;2]
|
a[1;3]
|
…
|
a[1;m-2]
|
a[1;m-1]
|
a[1;m]
|
a[2;1]
|
a[2;2]
|
a[2;3]
|
…
|
a[2;m-2]
|
a[2;m-1]
|
a[2;m]
|
a[3;1]
|
a[3;2]
|
a[3;3
|
…
|
a[3;m-2]
|
a[3;m-1]
|
a[3;m]
|
a[4;1]
|
a[4;2]
|
a[4;3]
|
…
|
a[3;m-2]
|
a[3;m-1]
|
a[3;m]
|
1.Властивість індексів елементів головної діагоналі квадратної таблиці A[mxm]: i=j.
2.Властивість індексів елементів бічної діагоналі квадратної таблиці A[mxm]: i+j=m+1,
де m - кількість рядків(стовпців) матриці.
3.Властивість запису прямокутної матриці A в одномірний масив: порядковий k –ий номер у одномірному масиві В[1..mxn] визначають за формулою: k = (i-1)n +j,
де n - кількість стовпців матриці A. Отже, елементи лінійного масиву
В([ b[1], b[2], b[3],, ..., b[(i-1)n +j], … , b[mxn])
4.Якщо відомо p - порядковий номер елемента в одномірному масиві В[1xq], тоді індекси і та j елемента a[i;j], який належить двовимірному масиву А[mxn] визначається за формулами:
i=(p-1) div n +1; j=p – (i-1)n,
де n - кількість стовпців матриці А[mxn].
Задача1. Вивести з даного запису прямокутної матриці A одномірний масив.
Задача MATRIZAmxn_L;
program MATRmxn_L;
const m=4; n=5; q=20;
var
B: array[1..q] of real;
A: array[1..m,1..n] of real;
i, j, p, k: integer;
begin
writeln(' Масив даних має вигляд: ');
{for i:=1 to m*n do b[1]:=0; }
for i:=1 to m do
for j:=1 to n do
begin
a[i,j]:= int(random*200-100); { присвоєння випадковим чином цілих чисел масиву від -100 до +100 }
b[(i-1)*n +j]:=a[i,j];
writeln('a[',i , '; ',j,']:= ',a[i,j], '= b[',(i-1)*n +j,']=', b[(i-1)*n +j]);
end;
end.Zадача 2. Вивести як таблицю запис матриці A[nxn] nа eкраn .
PROGRAM ANXN;
CONST N=4;
VAR A: ARRAY[1..N,1..N] OF INTEGER;
B: ARRAY[1..N*N] OF INTEGER;
m,K,P,I, L, J: INTEGER;
BEGIN
writeln(' ');
writeln(' ');
FOR i:=1 TO n do BEGIN
FOR j:=1 TO n*n do BEGIN
case n mod j of
0..n-1: write(' b[', j+ n*(i-1) , ']');
end;
end; writeln(' ');
end;
writeln(' ');
writeln(' ');writeln(' ');
END.
Задача. Записати програму, яка виводить
на екран квадратну матрицю 5х5, як таблицю впорядкованих натуральних
чисел.
Розв′язання.
program anxn;
const n=5;
var
a:
array[1..n,1..n] of integer;
b: array[1..n*n] of integer;
m,k,p,i, l, j: integer;
begin
for i:=1 to n do begin writeln('');
for j:=1 to n do begin
a[i,j]:=(i-1)*n +j;
b[(i-1)*n +j]:=a[i,j];
write('a[',i, '; ',j,']:= ',a[i,j], ' ');
end; {writeln(' ')}; end;
end.
{Задача "квадратна спіраль в одномірному масиві".}
PROGRAM ANXN;
CONST N=4;
VAR A: ARRAY[1..N,1..N] OF INTEGER;
B: ARRAY[1..N*N] OF INTEGER;
m,K,P,I, L, J: INTEGER;
BEGIN
for i:=1 to n do
for j:=1 to n do
begin
a[i,j]:= (i-1)*n +j;
b[(i-1)*n +j]:=a[i,j];
writeln('a[',i , '; ',j,']:= ',a[i,j], '= b[',(i-1)*n +j,']=', b[(i-1)*n +j]);
end;
writeln(' ');
writeln(' ');
K:=1;
M:=(N+1) div 2;
FOR P:=1 TO m do BEGIN
FOR J:=P TO N-P+1 do BEGIN
B[K]:=A[P,J];
write(' b[', k, ']=', b[k]);
K:=K+1;
END;
FOR I:=P+1 TO N-P+1 do BEGIN
B[K]:=A[I,N-P+1];
write(' b[', k, ']=', b[k]);
K:=K+1;
END;
FOR J:=N-P downTO P do BEGIN
B[K]:=A[N-P+1,J];
write(' b[', k, ']=', b[k]);
K:=K+1;
END;
FOR I:=N-P downTO P+1 do BEGIN
B[K]:=A[I,P];
write(' b[', k, ']=', b[k]);
K:=K+1;
END;
end;
writeln(' ');
writeln(' ');
FOR i:=1 TO n do BEGIN
FOR j:=1 TO n*n do BEGIN
case n mod j of
0..n-1: write(' b[', j+ n*(i-1) , ']');
end;
end; writeln(' ');
end;
writeln(' ');
writeln(' ');writeln(' ');
END.
Вар.
№
завд.
|
І
|
ІІ
|
ІІІ
|
ІV
|
1
|
Обчислити суму елементів таблиці Х(5).
|
Обчислити добуток елементів таблиці У(5).
|
Обчислити та вивести
корені елементів таблиці В(5).
|
Обчислити та вивести
квадрати елементів таблиці А(5).
|
2
|
В числовiй таблицi К(5) замінити всі еле-менти < 10 на 50. Результуючу
таблицю вивести на екран.
|
В числовiй таблицi R(5) всi елементи > 3 замiнити на їх коренi. Результуючу
таблицю вивести на екран.
|
В числовiй таблицi М(5) замiнити всi вiд'ємнi
елементи на 100. Змiнену таблицю вивести на екран.
|
В числовiй таблицi С(5) замiнити всi нульові елементи на 20. Змiнену
таблицю вивести на екран.
|
3
|
Заданi двi числовi таблицi М(5) i О(1). В таблицi М знаходяться числа, а
таблиця О пуста. В таблицi М знайти мінімальний елемент, добути з нього корінь
та записати в таблицю О. На екран вивести обидвi таблицi.
|
Заданi двi числовi таблицi К(5) i С(1). В таблицi К знаходяться числа, а
таблиця С пуста. Треба в таблицi К знайти максимальний елемент, додати до
нього 100 і записати в таблицю С. Вивести обидві таблиці на екран.
|
Заданi двi числовi таблицi А(5) i В(1). В таблицi А знаходяться числа, а
таблиця В пуста. Треба мінімальний
елемент таблиці А піднести в квадрат і записати в таблицю В. На екран
вивести обидвi таблицi.
|
Заданi двi числовi таблицi N(5) i F(1). В таблицi N знаходяться числа, а
таблиця F пуста. Треба в таблицi N
найти максимальний елемент, помножити його на 10 та записати в таблицю F. Вивести обидві таблиці на
екран.
|
Вар.
№
завд.
|
5
|
6
|
7
|
8
|
1
|
Задано випадковим чином таблиця Х(10). Впорядкувати таблицю в порядку
зростання методом “бульбашок”.
|
Задана таблиця S(5) всередині програми. Впорядкувати таблицю в
порядку спадання методом “бульбашок”.
|
Задана таблиця Z(10) всередині програми. Впорядкувати таблицю в
порядку спадання методом “бульбашок”.
|
Задано випадковим чином таблиця P(10). Впорядкувати таблицю
в порядку зростання методом “бульбашок”.
|
2
|
Задано користувачем таблиця А(5). Впорядкувати таблицю в порядку спадання
методом “прямого вибору”.
|
Задано випадковим чином таблиця N(10). Впорядкувати таблицю
в порядку зростання методом “бульбашок”.
|
Задано користувачем таблиця J(10). Впорядкувати таблицю в порядку спадання
методом “прямого вибору”.
|
Задана таблиця E(10) всередині програми. Впорядкувати таблицю в
порядку спадання методом “бульбашок”.
|
3
|
Задана таблиця В(10) всередині програми. Впорядкувати таблицю в порядку
спадання методом “бульбашок”.
|
Задано користувачем таблиця F(8). Впорядкувати таблицю в порядку спадання методом
“прямого вибору”.
|
Задано випадковим чином таблиця Y(15). Впорядкувати таблицю в порядку зростання методом
“бульбашок”.
|
Задано користувачем таблиця M(6). Впорядкувати таблицю в порядку спадання
методом “прямого вибору”.
|
Немає коментарів:
Дописати коментар