Теоретический материал (Паскаль)
Понятие двумерного массива. Описание типа массива. Формирование значений элементов массива случайным образом
Одним из основных направлений использования компьютеров является накопление и обработка данных - различных таблиц, справочников, словарей и другой информации. Для представления такой информации в программе удобно использовать массивы. Как правило, обработка таких данных осуществляется по одному и тому же закону, для чего удобно использовать циклические алгоритмы.
Мы уже рассматривали формирование и обработку одномерных массивов. Вспомним, что в массив мы объединяем конечную последовательность компонентов одного типа и даем им общее имя. Каждый отдельный компонент массива называется элементом. Количество элементов называется размером массива. Тип элементов определяет тип массива. Размер и тип массива указываются при его описании, причем размер может быть указан либо конкретным значением, либо ранее определенной константой. Номер элемента называется индексом. Индексы могут быть целыми положительными константами или целыми переменными. Чтобы обратиться к некоторому элементу массива, нужно рядом с идентификатором массива в скобках указать индекс элемента.
Но часто данные могут быть организованы в виде таблицы (матрицы), где расположение каждой переменной определяется номером строки и номером столбца. Например, место в зрительном зале задается указанием номера ряда и номером места в этом ряду. Такие данные удобно описать как двумерный массив. В отличие от одномерного массива каждому элементу двумерного массива соответствует пара индексов. Первый индекс - это номер строки, а второй - номер столбца, где расположен элемент массива.
Размер двумерного массива задается парой чисел: M*N, где M - число строк, а N - число столбцов в таблице.
Пусть задан двумерный массив Matr, имеющий размер 10*20. Этот массив на языке Паскаль может быть описан следующим образом:
Var
Matr : array [1..10,1..20] of integer;
const n = 10; //В константе n указаваеи количество элементов в массиве
var a:array[1..n]of integer;
i,s,max,min:integer;
begin
write('Массив: '); //Вывод на экран слова "Массив: "
for i:= 1 to n do //Цикл с параметром для последовательной обработки массива
begin
a[i]:= random(21)-10; //Заполнение массива случайными числами из промежутка [-10,10]
if (a[i]>0){//Проверяем положительный элемент или нет} and (a[i] mod 2 = 0){//Проверяем чётный элемент или нет} then s:=s+1; //В переменной s будет считаться количество чётных положительных элементов при выполнении, указанных условий
write(a[i],' ') //Вывод на экран массива в строку
end;
writeln; //Переход на новыю строку
if s=0 then write('Чётных положительных элементов в массиве нет') //Вывод на экран сообщения "Чётных положительных элементов в массиве нет" и завершение программы
else //Продолжении программы при нахождении хотя бы 1-го чётного положительного элемента
begin
max:=2; //Т.к. 2 минимальное чётное положительное число, то присваиваем это значение переменной max
for i:= 1 to n do //Поиск max элемента
if (a[i]>0) and (a[i] mod 2 = 0) and (a[i]>max){//Проверяем больше текущий элемент max или нет} then max:=a[i]; //Присваиваем переменной max значение текущего элемента при выполнении, указанных условий
min:=max; //Т.к. max значение элемента массива уже найдено, то переменной min присваиваем значение переменной max
for i:= 1 to n do //Поиск min элемента
if (a[i]>0) and (a[i] mod 2 = 0) and (a[i]<min){//Проверяем меньше текущий элемент min или нет} then min:=a[i]; //Присваиваем переменной min значение текущего элемента при выполнении, указанных условий
if max=min then write ('Максимальным и минимальным чётным положительным элементом является один и тот же элемент: ',max) //Вывод на экран результатов
else
begin
writeLn('Максимальный чётный положительный элемент: ',max);//Вывод на экран результатов
write('Минимальный чётный положительный элемент: ',min)//Вывод на экран результатов
end
end
end.