Лабораторная работа №7. Тема: Двумерные массивы. Цель: освоение двумерных массивов. Итак, мы рассмотрели одномерные массивы. Элементы массива могут, в свою очередь, также быть массивами, например: 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. Для каждой строки матрицы: принять элемент, расположенный на пересечении этой строки и первого столбца, за искомый (для этого запомнить его номер столбца); просмотреть строку матрицы; если модуль очередного элемента оказывается меньше сохраненного, принять этот элемент за искомый (то есть запомнить его номер столбца); вывести результаты. Как видите, в этом случае для каждой строки матрицы повторяются одни и те же действия присвоение начальных значений, просмотр строки и вывод результатов. Номер строки при обновлении минимума можно не запоминать, потому что он хранится в переменной цикла. Для разнообразия не будем сохранять в отдельной переменной и минимальный модуль.