Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






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






 

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

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

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

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

 

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.






© 2023 :: MyLektsii.ru :: Мои Лекции
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
Копирование текстов разрешено только с указанием индексируемой ссылки на источник.