Алгоритми обробки багатовимірних масивів. До традиційних обчислювальних алгоритмів обробки багатовимірних масивів (матриць) належать: алгоритми пошуку максимальних і мінімальних елементів та номерів

До традиційних обчислювальних алгоритмів обробки багатовимірних масивів (матриць) належать: алгоритми пошуку максимальних і мінімальних елементів та номерів рядків і стовпчиків, в яких вони розміщуються; обчислення сум і добутків елементів рядків і стовпчиків; перестановки місцями рядків і стовпчиків; вилучення рядків і стовпчиків; обчислення суми, різниці та добутку матриць; транспонування матриць та інші. Розглянемо деякі з цих алгоритмів.

Розглянемо алгоритм перетворення матриці.

Приклад.Нехай задана матриця , . Розробити програму, яка перестановкою рядків і стовпчиків перетворює цю матрицю так щоб мінімальний елемент матриці (вважається, що він єдиний) розмістився в правому нижньому куті.

Алгоритм буде складатися з двох частин. Перша частина – це пошук номера рядка і номера стовпчика , на перетині яких розміщений мінімальний елемент матриці. Друга частина – це переміщення мінімального елемента матриці у правий нижній кут. Для цього потрібно поміняти місцями -ий і -ий рядки та -ий і -ий стовпчики матриці. Програма перетворення матриці має вигляд:

Program LABR4_1;

{$APPTYPE CONSOLE}

uses Sysutils;

VAR a: array[1..15,1..15] of integer;

n, i, j, k, l, r: integer;

BEGIN

{Введення початкових даних}

writeln(‘Введіть розмір матриці а, (n<=15)’);

readln(n);

writeln(‘Введіть елементи матриці а по рядках’);

for i:=1 to n do

for j:=1 to n do

read(a[i,j]);

{Пошук координат мінімального елемента матриці }

k:=1; l:=1;

for i:=1 to n do

for j:=1 to n do

if a[i,j]

{Перестановка місцями -го і -го рядків матриці}

for i:=1 to n do

begin r:=a[n,i]; a[n,i]:=a[k,i]; a[k,i]:=r; end;

{Перестановка місцями -го і -го стовпців матриці}

for i:=1 to n do

begin r:=a[i,n]; a[i,n]:=a[i,l]; a[i,l]:=r; end;

{Виведення перетвореної матриці по рядках}

for i:=1 to n do

begin writeln;

for j:=1 to n do

write(a[i,j]:5 );

end;

END.

Розглянемо алгоритм обчислення добутку двох матриць.

Приклад.Нехай задано дві матриці і , . Розробити програму, яка обчислює добуток двох матриць .

Добутком матриць і є матриця , елементи якої обчислюються за правилом

тобто елемент , який стоїть в -му рядку і -му стовпчику, дорівнює сумі добутків відповідних елементів -го рядка матриці і -го стовпчика матриці . Програма обчислення добутку матриць у консольному режимі має вигляд:

Program LABR4_1;

{$APPTYPE CONSOLE}

uses Sysutils;

VAR a, b, c: array[1..15,1..15] of integer;

n, i, j, k: integer;

BEGIN

{Введення початкових даних}



writeln(‘Введіть розмір матриць а і b, (n<=15)’);

readln(n);

writeln(‘Введіть елементи матриці а по рядках’);

for i:=1 to n do

for j:=1 to n do

read(a[i,j]);

writeln(‘Введіть елементи матриці b по рядках’);

for i:=1 to n do

for j:=1 to n do

read(b[i,j]);

{Обчислення добутку матриць a і b }

for i:=1 to n do

for j:=1 to n do

begin c[i,j]:=0;

for k:=1 to n do

c[i,j]:= c[i,j]+a[i,k]*b[k,j];

end;

{Виведення матриці c по рядках}

for i:=1 to n do

begin writeln;

for j:=1 to n do

write(a[i,j]:5 );

end;

readln;

END.


4727160907459665.html
4727209836712113.html
    PR.RU™