Приклади розв’язання задач по обробці двомірних масивів

1)Для цілочисельної квадратної матриці розмірністю 4×4 поміняти місцями перший і останній, а також другий і третій рядки.

Розв’язування. Введемо тип matrix, в якому визначимо потрібну структуру даних. Для цієї цілі ми там само введемо допоміжну структуру stroka, в якій визначимо одномiрний масив із 4-х елементів. Таким чином, тип matrix буде задано як одномiрний масив із рядків матриці. Таке подання полегшить розв’язування поставленого завдання. В розділі опису змінних введемо а як ім'я для вихідної і результуючої матриці, i, j – для звертання до її елементів при введенні і виведенні, а також допоміжні змінні r типу stroka і k-типу integer для більш слушного процесу перестановки рядків. Тут якраз буде використовуватись той факт, що в пам'яті ЕОМ двомірний масив зберігається по рядках, тобто те, що відображено при завданні відповідної структури matrix. Ми бачимо, що в разі маніпулювання зі стовпцями масиву таке подання нічого не давало б, в силу вище сказаного.

Введення вихідного масиву здійснимо, використовуючи два вкладені цикли. Виведення елементів даного масиву і масиву-результату здійснимо також, однак для подання їх у вигляді прямокутної таблиці виведення елементів рядків у внутрішньому циклі здійснимо за допомогою оператора write, а для забезпечення переходу на новий рядок після завершення друкування поточного рядка додамо оператор writeln.

Лістинг програми:

Program lab_8;

uses crt;

type

stroka=array [ 1.. 4 ] of integer;

matrix=array [ 1.. 4 ] of stroka;

var

a: matrix; {початкова матриця}

r: stroka; {Одномiрний масив}

i, j, k: integer;

begin { Введення елементів вихідного масиву }

for i: =1 to 4 do

for j: =1 to 4 do read (a [ i, j ]); {Виведення елементів вихідного масиву }

writeln ('початковий масив: ');

for i:=1 to 4 do

begin

for j: =1 to 4 do write (a [ i, j ]: 4);

writeln

end; { Обробка масиву }

k: =3;

for i: =1 to 2 do

begin r: =a [ i+k ];

a [ i+k ]: =a [ i ];

a [ i ]: =r;

k: =1

end;

{ Виведення елементів масиву – результату }

writeln;

writeln ('результат: ');

for i: =1 to 4 do

begin

for j: =1 to 4 do write (a [ i, j ]: 4);

writeln; end; end.

Результат роботи програми:

Початковий масив:

1 3 –6 8

0 –5 6 –3

4 5 7 8

–2 3 4 –4

Результат:

–2 3 4 –4

4 5 7 8

0 –5 6 –3

1 3 –6 8

Блок-схема алгоритму

Приклади розв’язання задач по обробці двомірних масивів - student2.ru

2)В заданій дійсній матриці 5×3 знайти найбільший елемент і його індекси.

Розв’язування. Задаємо тип matrix як звичайну двомірну структуру даних, оскільки подання її у вигляді, аналогічному попередньому завданню, не дасть ніякого ефекту. Введення і виведення інформації здійснимо аналогічно попередньому завданню. Пошук найбільшого елемента здійснимо, використовуючи стандартний спосіб. При цьому у змінній max будемо зберігати значення цього елемента, а змінні l і k використовуємо для позначення відповідно до номерів рядка і стовпця цього елемента (індексів). У вигляді параметрів циклів введемо також цілі змінні j та i.

Лістинг програми:

Program lab_8_2; uses crt;

type

matrix=array [ 1.. 5, 1.. 3 ] of real;

var a: matrix; {початкова матриця}

i, j: integer; {параметри циклу}

max: real; {максимальний елемент}

l, k: integer; {iндекси максимального елемента}

begin

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

for i: =1 to 5 do

for j: =1 to 3 do read (a [ i, j ]);

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

writeln ('початкова матриця: ');

for i: =1 to 5 do

begin

for j:=1 to 3 do write(a[i,j]: 8: 3);

writeln; end;

{ Пошук максимального елемента}

max: =a [ 1, 1 ]; l: =1; k: =1;

for i: =1 to 5 do

for j: =1 to 3 do

if a[i,j] >max then begin max:=a[i,j];

l: =i; k: =j

end;

{ Виведення результатів: }

writeln;

writeln ('найбільший елемент матрицi', max:8:3);

writeln('він є в',l,'рядку,', k,' стовпці'); end.

Результат роботи програми:

Початкова матриця:

2,000 –5,800 –34,900

0,450 –3,560 5,760

2,120 2,320 3,610

–0,080 4,710 9,930

0,680 0,560 7,290

Найбільший елемент матрицi рівний 9,930 знаходиться в 4 рядку, 3 стовпці.

Блок-схема алгоритму

Приклади розв’язання задач по обробці двомірних масивів - student2.ru

3)Написати програму перемноження двох дійсних матриць А і В 3-го порядку.

Приклади розв’язання задач по обробці двомірних масивів - student2.ru

Лістинг програми:

Program MULT; {перемноження двох матриць}

Const n=3; {задання розміру матриць}

Type Matr=array[1..n,1..n] of real; {задання двовимірного масиву}

{визначення вихідних матриць}

const A: Matr=((1.1,1.1,1.1),(2.1,2.1,2.1),(3.1,3.1,3.1));

B: Matr=((4.1,4.1,4.1),(3.1,3.1,3.1),(4.1,4.1,4.1));

{опис змінних, що використовуються}

var C: Matr; s: real; i,j: integer;

begin

for i:=1 to n do

for j:=1 to n do begin

S:=0;

for k:=1 to n do

S:=S+A[i, k]*B[k, j];

C[i, j]:=S;

end;

writeln (‘С=АВ’);

for i:=1 to n do begin

for j:=1 to n do

write (C[i, j]:4:1); writeln;

end; readln; end.

Контрольні питання

1. Як задається двомірний, багатомірний масиви?

2. Чи можна описувати багатомірні масиви безпосередньо в розділі опису змінних? Якщо можна, тоді як?

3. Як здійснюється звертання до елементів двомірних масивів?

4. Які дії можна виконувати над багатомірними масивами? Над їх елементами?

5. Чи можуть <типи iндексів> багатомірних масивів бути різно­манітними?

Викладач ____________ М. О. Пашко

Наши рекомендации