пʼятниця, 21 листопада 2014 р.

Самостійна робота з масивами на мові Паскаль

Верхній та нижній трикутник квадратної матриці

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). Впорядкувати таблицю в порядку спадання методом “прямого вибору”.

Немає коментарів:

Дописати коментар