- •Методические указания
- •«Информатика»
- •Содержание
- •Введение
- •2 . Методические указания по выполнению контрольной работы
- •3. Цели и задачи выполнения контрольной работы
- •4. Общие требования к содержанию и оформлению контрольной работы
- •Задания к контрольным работам Контрольная работа № 1
- •Контрольная работа № 2 Линейные массивы
- •Справочные материалы для самостоятельной работы студентов Основные сведения о языке Паскаль
- •Правила языка
- •Оператор n
- •Программа:
- •Оператор
- •Одномерные массивы Описание массивов
- •Многомерные массивы
- •Рекомендуемая литература Основная литература
- •Дополнительная литература
Многомерные массивы
Элементы многомерных массивов нумеруются не одним, а несколькими (как минимум двумя) индексами. Например, массив
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.
