Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
УМК_ОАиП.doc
Скачиваний:
47
Добавлен:
01.04.2025
Размер:
5 Мб
Скачать
☆

Тема 6.2. Двумерные массивы. Действия с двумерными массивами.

Цель: сформированию представления о двумерном массиве и основных свойств квадратных матриц; рассмотреть действия, которые можно выполнить над матрицами; познакомить с типовыми алгоритмами обработки матриц на языке Pascal.

  • определение понятия двумерный массив;

  • форма записи двумерного массива

  • типовые алгоритмы обработки матриц на языке Pascal;

  • формирование умения решать алгоритмы с двумерными массивами;

Лабораторная работа №17.

Тема: Двумерные массивы.

Цель: освоение двумерных массивов.

Итак, мы рассмотрели одномерные массивы. Элементы массива могут, в свою очередь, также быть массивами, например:

Const n=4;m=3;

Type mas = array[1..n] of integer;

Mas2 = array[1..m] of mas;

Обычно это записывается так:

Type mas2 = array[1..m,1..n] of integer;

Здесь описан тип массива, состоящего из m массивов, каждый из которых содержит n целых чисел. Иными словами, это матрица из m строк и n столбцов, или двумерный массив.

Задача 7.1. Минимальный по модулю элемент

……………………………………………………………………………………………………

Написать программу, которая находит минимальный по модулю элемент вещественной матрицы размером 5 8 и его координаты.

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

Алгоритм

1. Ввести матрицу.

2. Принять элемент, расположенный на пересечении первой строки и первого столбца, за искомый (для этого запомнить его модуль, номер строки и номер столбца).

3. Поочередно просмотреть все элементы матрицы; если модуль очередного эле­мента оказывается меньше сохраненного, принять этот элемент за искомый (то есть запомнить его модуль, номер строки и номер столбца).

4. Вывести результаты.

Программа:

program min_abs_1;

uses crt;

const m=5;n=8;

var

a:array[1..m,1..n] of real;

i,j:integer; {текущие значения индексов строки и столбца }

im,jm:integer; {значения индексов минимального элемента}

minmod:real; {буфер для хранения минимального модуля}

begin clrscr;

randomize;

for i:=1 to m do

for j:=1 to n do a[i,j]:=random(101); {ввод элементов массива}

writeln;writeln('Исходный массив');

for i:=1 to m do begin

for j:=1 to n do write (a[i,j]:6:1);writeln end;writeln;

minmod:=abs(a[1,1]); {начальные установки}

im:=1;jm:=1;

for i:=1 to m do {цикл перебора всех строк}

for j:=1 to n do {цикл просмотра строки (меняется номер столбца)}

if abs(a[i,j])<minmod then begin

minmod:=abs(a[i,j]);im:=i;jm:=j; {обновление минимума}

end;

writeln ('Минимальный по модулю элемент : ',minmod:6:1,' Его координаты: ',im:3,jm:3);

readln;

end.

Размеры массива заданы именованными константами m и n, что позволяет легко их изменять.

Для ввода матрицы требуется организовать вложенные циклы. Порядок их следования не важен, главное, чтобы он совпадал с порядком ввода исходных данных. Для приведенной последовательности циклов элементы должны вводиться по строкам.

Задание: Измените программу так, чтобы она находила указанную величину не для всей матрицы, а для каждой ее строки.

Алгоритм ее работы будет выглядеть так:

1. Ввести матрицу.

2. Для каждой строки матрицы:

  • принять элемент, расположенный на пересечении этой строки и первого столбца, за искомый (для этого запомнить его номер столбца);

  • просмотреть строку матрицы; если модуль очередного элемента оказыва­ется меньше сохраненного, принять этот элемент за искомый (то есть за­помнить его номер столбца);

  • вывести результаты.

Как видите, в этом случае для каждой строки матрицы повторяются одни и те же действия - присвоение начальных значений, просмотр строки и вывод результатов. Номер строки при обновлении минимума можно не запоминать, потому что он хранится в переменной цикла. Для разнообразия не будем сохранять в отдельной переменной и минимальный модуль.