Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
контрольные работы информатика.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
531.97 Кб
Скачать

Многомерные массивы

Элементы многомерных массивов нумеруются не одним, а несколькими (как минимум двумя) индексами. Например, массив

x2 : array [1..10, 1..20] of Real;

представляет собой двухмерный массив, который можно интерпретировать как матрицу из 10 строк и 20 столбцов. Элементы этого массива могут принимать вещественные значения. Массив

x3 : array [1..10, 1..20, 1..5] of Real;

представляет собой трёхмерный массив из 1000 элементов.

Чаще всего в программах не используют массивов размерностью больше двух. Поскольку двумерные массивы по смыслу являются матрицами, им следует уделить больше внимания.

Двухмерный массив – структура данных, хранящая прямоугольную матрицу. В матрице каждый элемент определяется номером строки и номером столбца, на пересечении которых он расположен. В Паскале двухмерный массив представляется массивом, элементами которого являются одномерные массивы. Два следующих описания двумерных массивов тождественны:

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;

Для иллюстрации принципов работы с двухмерными массивами разберем несколько примеров.

Пример 1.

Сформировать таблицу Пифагора (таблица умножения) и вывести ее на экран.

program Pifagor;

uses crt;

type k=1..9; m=1..81;

var pif: array[k, k] of k;

i, j:p;

begin

clrscr; {очистка экрана}

for i:=1 to 9 do {цикл по строкам}

for j:= 1 to 9 do {цикл по столбцам}

pif[i,j]:= i*j;

for i:=1 to 9 do

begin

for j:=1 to 9 do write(pif[i,j],’ ’);

writeln; {перевод курсора на сл. строку}

end;

readkey

end.

Пример 2.

Задан двухмерный массив В(10, 10), заполненный случайными числами из отрезка [-10,10]. Найти и вывести на экран те элементы массива, которые больше заданного числа k.

program massiv;

type p=1..10; m=-10..10;

var

b: array[p,p] of m;

i, j:p; k :m;

Begin

for i:=1 to 10 do

begin

for j:= 1 to 10 do

begin

b [i,j]:= random(21)-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],’ ’);

readkey

end.

Пример 3.

Задать и распечатать массив 10 на 10, состоящий из целых случайных чисел в интервале [1,100]. Найти сумму элементов, лежащих выше главной диагонали.

При отсчете, начиная с левого верхнего угла таблицы, главной будем считать диагональ из левого верхнего угла таблицы в правый нижний. При этом получается, что элементы, лежащие на главной диагонали будут иметь одинаковые индексы, а для элементов выше главной диагонали номер столбца будет всегда превышать номер строки.

program M5;

uses crt;

type p=1..10; m=1..100;

var

a : array[p,p] of m;

i, k : p;

s : integer;

begin

s:=0;

for i:=1 to 10 do

begin

for k:=1 to 10 do

begin

a[i,k]:=random(100)+1;

write(a[i,k]:6);

end;

writeln;

end;

for I:=1 to 10 do

for k:=i+1 to 10 do

s:=s+a[i,k];

writeln('Сумма элементов выше гл. диагонали равна s=',S);

readkey

end.