Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторні роботи з програмування Модуль 2.DOC
Скачиваний:
27
Добавлен:
23.02.2016
Размер:
1 Mб
Скачать

4. Алгоритми обробки багатовимірних масивів

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

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

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

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

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]<a[k,l] then begin k:=i; l:=j;end;

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

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.