У різних розділах математики та інших наук дані, що мають вигляд інформації, заданої як послідовність рядків і стовпчиків, називають по-різному: матриці - у вищій алгебрі, таблиці - у розрахункових задачах, масиви - у програмуванні.
У задачах, які передбачають введення великої кількості довільних початкових даних, для задання інформації зручно використовувати генератор випадкових чисел.У задачах, які передбачають роботу з таблицями значень, результати для кращої читабельності зручно виводити у вигляді справжньої таблиці, розташовуючи рядок під рядком, а числа у стовпчиках одне під одним.
Масив - це великий простір чогось однорідного за типом. (Зі словника іноземних слів, 1954 р.)
Масив у програмуванні - це тип структури даних, що має складені значення. (З Оксфордського словника англійської мови, 1995 р.)
Масив - це впорядкований скінченний набір елементів (даних) одного типу. Зазвичай працюють з масивами, які містять числа.
Масивом називається скінченна послідовність змінних одного типу, які мають однакове ім'я та різняться порядковим номером.
Індексом називається порядковий номер елемента масиву.
Отже, введено новий тип — масив. Усі типи, які досі були вам відомі, називаються простими. Масив є прикладом структурованого типу, тобто він, у свою чергу, складається з елементів іншого типу.
Як звернутися до елементів цього масиву? Для цього необхідно вказати індекс.
Наприклад,
T[2], T[5], T[i], T[i + j].
Але в третьому і четвертому прикладах для визначення необхідного елемента масиву треба знати значення величин і та j. Така загальність визначення індексу масиву є дуже потужним засобом програмування, але разом з цим і провокує можливі помилки: отриманий результат обчислення індексу масиву може виходити за межі інтервалу, виділеного для індексів даного масиву.
I ще один важливий момент, яким у жодному разі не можна нехтувати. Масиви відносяться до структур з так званим прямим або довільним доступом: щоб визначити окремий елемент масиву, достатньо вказати його індекс.
Тепер зрозуміло, як у циклі перебирати різні значення елементів масиву: для цього достатньо змінювати їх індекси. А закон зміни індексів дуже простий - кожне наступне значення більше попереднього на одиницю. Дуже зручна закономірність!
Перетворення двомірного масиву(таблиці)
в лінійний масив(рядок) мовою 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.
{Задача "квадратна спіраль в одномірному масиві".}
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.
Верхній
та нижній трикутник квадратної матриці
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.
Ці
закономірності використовуються для створення алгоритмів на квадратних
матрицях.
Немає коментарів:
Дописати коментар