Лабораторная работа №5. Массивы (двумерные)
Тема: Массивы Object Pascal.
Цель: Сформировать практические навыки описания и применения двумерных массивов Object Pascal для обработки данных.
Задание
В соответствии с приведенными вариантами заданий и приведённой ниже спецификацией реализуйте консольное приложение под Windows. Разработайте тестовые задания, и протестируйте программу.Рекомендации к выполнению
Для обработки компонентов двумерного массива используйте вложенные циклы. Вложенные циклы организуйте с помощью цикла с параметром (оператор цикла for). Разработанные приложения сохраняйте в отдельной папке.Порядок выполнения
Внимательно прочитайте условие задачи. Разработайте блок-схему алгоритма решения задачи. На основе блок-схемы с помощью редактора напишите и отредактируйте программу. С помощью компилятора устраните все синтаксические ошибки. Разработайте тестовый набор данных и протестируйте программу с целью устранения логических ошибок.Варианты заданий
В каждом из следующих вариантов задания необходимо обеспечить ввод значений в элементы двумерного массива и вывод их на экран для контроля правильности ввода. Массивы описывайте так:
const
r = 3;// число строк
c = 3; //число столбцов
type
rows = 0..r -1;//тип значений для индекса строк
colomns = 0..c -1; ;//тип значений для индекса столбцов
matrix = array[rows, colomns] of integer;//тип данных - двумерный массив
Разработайте приложение, которое отыскивает произведение положительных значений компонентов двумерного массива A: matrix и отображает на экране полученный результат. Разработайте приложение, которое отыскивает максимальный по значению элемент двумерного массива A: matrix и значения его индексов и отображает на экране полученный результат. Разработайте приложение, которое отыскивает произведение элементов двумерного массива A: matrix, лежащих на главной диагонали и отображает на экране полученный результат. Разработайте приложение, которое отыскивает произведение элементов двумерного массива A: matrix лежащих, на побочной диагонали и отображает на экране полученный результат. Разработайте приложение, которое в массиве A: matrix в столбце с заданным индексом отыскивает произведение элементов и отображает на экране полученный результат. Разработайте приложение, которое в массиве A: matrix в строке с заданным индексом отыскивает сумму элементов и отображает на экране полученный результат. Разработайте приложение, которое в массиве A: matrix обменивает значениями элементы строк с заданными индексами и отображает на экране полученный массив. Разработайте приложение, которое в массиве A: matrix обменивает значениями элементы столбцов с заданными индексами и отображает на экране полученный массив.Пример 1.
Написать и протестировать программу, которая в двумерном массиве A:matrix находит заданное значение и возвращает индексы, под которыми оно хранится в массиве. Если искомое значение в массиве отсутствует возвращаются значения индексов равные -1.
Для решения задачи необходимо:
Переменным cind, rind – предназначенным для хранения искомых значений индексов следует присвоить начальное значение -1. Вспомогательной переменной f, предназначенной хранить флаг поиска присвоить значение false. Поиск продолжать пока флаг поиска равен false.
Поочерёдно, начиная с первого, копировать значения компонента массива, и сравнивать его с искомым. Если значение очередного компонента равно искомому и f не равно true занести в переменные cind, rind значения его индексов, переменной f присвоить значение true.
Для просмотра значений компонентов массива необходимо организовать цикл. Для этой цели воспользуемся двумя вложенными один в другой циклами с параметром (управляющая структура FORDO).
Блок-схема решения представлена ниже на рисунке.

Пример консольного приложения, в котором вычисляется произведение чётных значений компонентов одномерного массива целых переменных, представлен ниже.
//------------------------------------------------------------------------------------------
program Find;
// Поиск заданного значения в массиве
{$APPTYPE CONSOLE}
uses
SysUtils;
Const
r = 3; //строк в массиве
c = 3; //столбцов в массиве
Type
rind = 0.. r;// тип индекса строк
cind = 0.. c;// тип индекса столбцов
matrix = array [rind, cind] of integer;// тип массива
var
p: integer;//искомое значение
ri, ci: integer;//искомые индексы строки и столбца
A: matrix;// массив
I, J: integer;//индекс строки и столбца
f: boolean;//флаг поиска
begin
for I:= 0 to r - 1 do
for J:= 0 to c - 1 do
begin//ввод значений компоннтов массива
write('A[',I,',',J,'] = ');
readln(A[I, J]);
end;
write('p = ');
readln(p);//ввод искомого значения
f:= true;
for I:= 0 to r - 1 do
for J:= 0 to c - 1 do//поиск искомого значения
if (A[I, J]= p) and f then begin
ri:= I;
ci:= J;
f:= false;
end;
writeln('row = ',ri,' col = ',ci);
readln;
end.
//------------------------------------------------------------------------------------------


