Читайте также:
|
|
Прежде, в разделе описаний, массив надо описать. Как описывается двумерный числовой массив?
Первый способ
Type
t = array [1..m, 1..n] of integer;
Var
a: t;
Второй способ
Var
a: array [1..m, 1..n] of integer;
Третий и четвертый способы
Еще два способа описания массивов основываются на следующих соображениях.
В описании массива t = array [n1..n2] of s; в качестве базового типа s может выступать не только один из стандартных типов, т.е. real, integer, longint, но и ранее описанный в программе тип. Пусть тип s, в свою очередь, был описан как массив:
s = array [m1..m2] of integer;
и пусть переменная a - это переменная типа t, тогда a[k] - это переменная типа s, а a[i][j] - переменная типа integer.
Отсюда вытекает такой способ описания:
Type
s = array [1..m] of integer; {Описание массива строки}
t = array [1..n] of s; {Описание таблицы}
Var
a: t; {Описывается имя массива}
Таким образом, здесь мы видим последовательное описание, вначале строк, потом всей таблицы и наконец имени массива.
Такую запись можно сократить и сделать более компактной, например:
Type
t = array [1..m] of array [1..n] of integer;
Var
a: t;
В зависимости от конкретной задачи, а порой личного вкуса и даже настроения мы будем пользоваться тем или иным способом (но самым важным является то, чтобы описание было понятным, надо всегда помнить, что вашу программу кто-то будет читать или пользоваться ее).
Так, третий массив может быть описан следующим способом:
Const
m = 4; n = 5;
Type
s = array [1..m] of integer;
t = array [1..n] of s;
Var
a: t;
1. Ввод элементов массива с клавиатуры. Для ввода массива необходимо организовать два цикла. Один цикл по количеству строк, а второй - по количеству элементов в строке, т.е. по количеству столбцов.
Пример 1. Рассмотрим программу ввода с клавиатуры массива чисел с последующим выводом в виде таблицы на экран.
Program Problem1;
Const
m = 4; n = 5;
Type
s = array [1..m] of integer;
t = array [1..n] of s;
Var
a: t;
i, j: integer;
Begin
for i:= 1 to n do
for j:= 1 to m do
Begin
write('Введите элемент ', i, '-й строки ');
write(j, '-го столбца '); readln(a[i, j])
end;
writeln('Заданный двумерный числовой массив');
for i:= 1 to n do
Begin
for j:= 1 to m do write(a[i, j]:6, ' ');
writeln
End
end.
Цикл по i, задает номера строк массива. После этого начинает работать цикл по j - по количеству элементов в строке, т. е. по количеству столбцов. Операторы write выдают запрос о вводе элементов. После ввода элементов одной строки, цикл по i повторяется и вводятся элементы следующей строки и так далее.
Для вывода элементов массива на экран организованы те же два цикла, но по завершению внутреннего цикла по j включен пустой оператор writeln, чтобы следующие элементы выводились с начала новой строки.
2. С другим способом ввода элементов массива вы уже знакомились при изучении работы с одномерными массивами.
Это - создание элементов с помощью функций случайных чисел: random(n) - для целых чисел или random*x - для вещественных.
Составим процедуру ввода двумерного массива, аналогичную той, которая была выполнена для одномерного массива.
Procedure create_two(n, m: integer; var a: t);
Var
i, j: integer;
Begin
writeln('Заданный двумерный массив целых чисел');
randomize;
for i:= 1 to n do
Begin
for j:= 1 to m do
Begin
a[i, j]:= random(201) - 100;
write(a[i, j]:6, ' ')
end;
writeln
End
End;
Пример 2. В двумерном массиве a(n, m) найдите номер и значение наибольшего элемента.
Принципиально нового в этой задаче нет. Она решается по той же схеме, как и определение наибольшего элемента одномерного массива. Единственное отличие заключается в том, что для запоминания номера наибольшего элемента необходимы две переменные, в которых будут значения номера строки и номера столбца, в котором находится искомый элемент.
Дата добавления: 2015-07-11; просмотров: 138 | Нарушение авторских прав