Читайте также: |
|
Элементы многомерных массивов нумеруются не одним, а несколькими (как минимум двумя) индексами. Например, массив
x2: array [1..10,1..20] of Real;
представляет собой двумерный массив, который можно интерпретировать как матрицу из 10 строк и 20 столбцов. Элементы этого массива могут принимать вещественные значения. Массив
x3: array [1..10,1..20,1..5] of Real;
представляет собой трёхмерный массив из 1000 элементов.
Чаще всего в программах не используют массивов размерностью больше 2. Поскольку двумерные массивы по смыслу являются матрицами им следует уделить больше внимания.
Двумерный массив – структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен. В Паскале двумерный массив представляется массивом, элементами которого являются одномерные массивы. Два следующих описания двумерных массивов тождественны:
Var a: array [1..10] of array [1.. 20] of real;
Var a: array [1..10, 1..20] of real;
Чаще всего при описании двумерного массива используют второй способ. Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индексов (первый индекс – номер строки, второй индекс – номер столбца). Все действия над элементами двумерного массива идентичны действиям над элементами одномерного массива. Только для инициализации двумерного массива используется вложенный цикл for.
Например,
For i:= 1 to 10 do
For j:= 1 to 20 do
A[i, j]:= 0;
Для иллюстрации принципов работы с двумерными массивами разберем несколько примеров.
Пример. Сформировать таблицу Пифагора (таблица умножения) и вывести ее на экран.
Program Pifagor;
Uses crt;
Var p: array[1..9, 1..9] of integer;
i, j:integer;
Begin
Clrscr; {Очистка экрана}
for i:=1 to 9 do {Цикл по строкам}
for j:= 1 to 9 do {Цикл по столбцам}
p[i,j]:= i*j;
for i:=1 to 9 do
begin
for j:=1 to 9 do write(p[i,j],’ ’);
writeln; {Перевод курсора на сл. строку}
end;
end.
Пример. Задан двумерный массив В(10, 10), заполненный случайными числами из отрезка [-10,10]. Найти и вывести на экран те элементы массива, которые больше заданного числа k.
Program massiv;
Var
b: array[1..10, 1..10] of integer;
i, j, k:integer;
Begin
for i:=1 to 10 do
begin
for j:= 1 to 10 do
begin
b [i,j]:= random(20)-10;
write(b[i,j], ‘ ‘);
end;
writeln;
end;
write(‘Введите число k’);
readln (k);
For i:=1 to 10 do
For j:=1 to 10 do
If b[i,j]>k then write (b[i, j],’ ’);
End.
Пример. Задать и распечатать массив 10 на 10, состоящий из целых случайных чисел в интервале [1,100]. Найти сумму элементов, лежащих выше главной диагонали.
При отсчете, начиная с левого верхнего угла таблицы, главной будем считать диагональ из левого верхнего угла таблицы в правый нижний. При этом получается, что элементы, лежащие на главной диагонали будут иметь одинаковые индексы, а для элементов выше главной диагонали номер столбца будет всегда превышать номер строки.
Program M5;
Var
A: Array[1..10,1..10] Of Integer;
I, K: Byte;
S: Integer;
Begin
S:=0;
For I:=1 To 10 Do
Begin
For K:=1 To 10 Do
Begin
A[I,K]:=Trunc(Random*100)+1;
Write(A[I,K]:6);
If K>I Then S:=S+A[I,K]
End;
Writeln;
End;
Writeln('Сумма элементов выше гл. диагонали равна',S)
End.
Дата добавления: 2015-08-13; просмотров: 126 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Алгоритм быстрой сортировки. | | | Длина строки. |