Двухмерный массив (матрица). Примером двухмерного массива является шахматная доска, положение клетки характеризуется значением строки и столбца, а значением элемента будет наличие или отсутствие на данной клетки фигуры.
|
|
|
Направление изменения второго индекса
|
Направление изменения первого индекса
|
|
1
|
2
|
3
|
.
|
.
|
.
|
.
|
N
|
|
1
|
|
|
|
|
|
|
|
|
|
2
|
|
|
|
|
|
|
|
|
|
3
|
|
|
|
|
|
|
|
|
|
…
|
|
|
|
|
|
|
|
|
|
M
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Рис 2.6.
|
|
|
Трехмерный массив , n - мерный массив. Кроме одномерных и двухмерных массивов встречаются и трехмерные и n-мерные массивы. Если трех мерный массив еще можно изобразить на плоскости (Рис 2.7.), то n-мерный массив изобразить на двумерной плоскости затруднительно. Это связано с тем, что мы живем с вами в пространстве трех измерений. Несмотря на это многомерные массивы часто используются в научных и экономических расчетах.
Рис 2.7.
2.7.2.Описание массива
Для того, чтобы наша программа могла работать с массивом данных, она должна предварительно выделить для нее место в памяти. Для хранения каждого элемента массива выделяется отдельная ячейка памяти. Все эти ячейки будут иметь одинаковый размер, который зависит от типа данных, которые мы будем хранить в данном массиве.
Описание массива, как и всех переменных, производится в блоке описания Var. Для этого используется зарезервированное слово array. Описание массива выглядит так:
Одномерный массив
Massiv1 : array [n1..n2] of тип переменной;
Двухмерный массив
Massiv2 : array [m1..m2,n1..n2] of тип переменной;
Трехмерный массив
Massiv3: array [m1..m2,n1..n2,p1..p2] of тип переменной;
Где Massiv1, Massiv2, Massiv3 – имена массивов,
m1..m2,n1..n2,p1..p2 – пределы изменения индексов массива,
тип переменной – тип элементов массива.
Имя массива является единым для всех его элементов.
Нижний предел изменения индексов, как правило, принимают за 1.
Одномерный массив
Massiv1 : array [1..n] of тип переменной;
Двухмерный массив
Massiv2 : array [1..m,1..n] of тип переменной;
Трехмерный массив
Massiv3 : array [1..m,1..n,1..p] of тип переменной;
Разность между верхним и нижним индексом плюс 1 и есть максимально возможное количество элементов с данным индексом.
Тип элемента массива может быть как любым простым типом (real, integer, char,..), так и составным типом (массивом, записью,..).
Общее количество памяти, выделяемое для данного массива, есть произведение объема памяти, занимаемой одним элементом массива, в зависимости от его типа, на общее количество элементов массива, которое определяется как произведение максимально возможного количества элементов по всем индексам
2.7.3. Нахождение максимального элемента в массиве
Попробуем решить нашу задачу, поставленную в параграфе 2.7.1. Для начала нам надо описать массив чисел, который вы будете вводить с клавиатуры. Как мы говорили числа целые и их не более 40. Выделим память для хранения переменных: счетчика, конкретного количества чисел которое вы будете вводить и значения минимального элемента.
Program Primer_8; {программа нахождение минимального по величине числа в массиве}
var
Chislo :array [1..40] of integer;
i,n, resultat: integer;
Использование массива позволяет упростить текст программы для ввода данных
procedure init;
begin
write ('input n -');
readln (n); {ввод количества чисел}
for i:=1 to n do
begin
write ('input Chislo[',i,']=');
readln (Chislo[i]);
end;
end;
Обратите внимание на процедуру write('input Chislo[',i,']=') , использование такой конструкции позволяет выводить не только приглашение ввода нового элемента, но и за счет изменения значения счетчика помогает не запутаться с вводом значения конкретного элемента.
После ввода исходных данных, приступим к основной работе: поиску элемента с минимальным значением. Для этого воспользуемся искусственным приемом: Будем считать, что первый элемент и является элементом с минимальным значением. Действительно, если в массиве нет других элементов, то так оно и есть. В переменную с именем resultat поместим значение первого элемента. Если элементов в массиве несколько сравним значение переменной resultat со значением второго элемента массива. Если значение второго элемента меньше значения переменной resultat , то поместим в переменную resultat значение второго элемента, иначе оставим значение resultat без изменения. Будем повторять эти действия, пока не просмотрим все элементы массива:
procedure work;
begin
resultat:= Chislo[1];
for i:=2 to n do
if Chislo[i]< resultat then
resultat:= Chislo[i];
end;
Нам остается вывести результат на экран, в этом затруднений, наверное, не будет. Текст модуля такой же, как и для программы Primer_7. Текст тела программы так же не изменился.
Достарыңызбен бөлісу: |