Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Pascal_лекция7.doc
Скачиваний:
21
Добавлен:
30.03.2015
Размер:
95.23 Кб
Скачать

Понятие многомерных массивов

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

Описание двумерного массива:

Type

<имя>=array[диапазон1,диапазон2] of <базовый тип>;

диапазон1, диапазон2 – диапазоны для двух индексов.

Например, изображение целых чисел последовательно в нескольких строках является матрицей:

5 4 3 6

2 8 1 7

4 3 9 5

Данная матрица имеет размер 3 на 4, т. е. она состоит из трех строк и четырех столбцов. Если всю матрицу обозначить одним именем, например А, то каждый элемент матрицы обозначается с двумя индексами, например A[I,J]. Здесь первый индекс I обозначает номер строки (I = 1, 2, 3), второй индекс J — номер столбца (J = 1, 2, 3, 4). Такую матрицу можно описать следующим образом (с использованием имени типа Т):

TYPE

Т=ARRAY [1..3, 1..4] OF INTEGER;

VAR А:Т;

ПРИМЕРЫ ПРОГРАММИРОВАНИЯ ЗАДАЧ С ИСПОЛЬЗОВАНИЕММАССИВОВ

Найти максимальный элемент массива В

а) массив – константа

Program m1;

const

B:array[1..2,1..5] of integer=((4,3,2,-1,0),(-7,0,13,2,8));

var

max,i,j:integer;

begin

max:=b[1,1];

for i:=1 to 2 do

for j:=1 to 5 do

if b[i,j]>max then max:=b[i,j];

writeln('max=',max);

end.

--------------

Ответ

max=13

-----------------------------------------------------------

б) Массив – переменная величина; элементы массива задаются с клавиатуры.

Program m4;

type

mass=array[1..2,1..5] of integer;

var

B:mass;

max,i,j:integer;

begin

writeln('введите массив В');

for i:=1 to 2 do

for j:=1 to 5 do

read(b[i,j]);

writeln;

max:=b[1,1];

for i:=1 to 2 do

for j:=1 to 5 do

if b[i,j]>max then max:=b[i,j];

writeln('max=',max);

end.

--------------------

Ответ

введите массив В

4 3 5 2 6

9 8 -4 67 2

max=67

--------------------------------------------------------------------------------

в) Массив – переменная величина; элементы массива задаются с помощью генератора случайных чисел RANDOMIZE.

Program m3;

var

B:array[1..2,1..5] of integer;

max,i,j:integer;

begin

randomize;

writeln('введите массив В');

for i:=1 to 2 do begin

for j:=1 to 5 do begin

b[i,j]:=random(30)-10;

write(b[i,j]:3,' ');

end;

writeln;

end;

writeln;

max:=b[1,1];

for i:=1 to 2 do

for j:=1 to 5 do

if b[i,j]>max then max:=b[i,j];

writeln('max=',max);

end.

-----------------------------

Ответ

введите массив В

18 10 17 10 10

12 10 7 8 19

max=19

--------------------------------------------------------------------------------------------------

г) Описание типа массива задаётся в разделе описаний типа TYPE; массив – переменная величина; элементы массива вводятся с клавиатуры.

Program m4;

type

mass=array[1..2,1..5] of integer;

var

B:mass;

max,i,j:integer;

begin

writeln('введите массив В');

for i:=1 to 2 do

for j:=1 to 5 do

read(b[i,j]);

writeln;

max:=b[1,1];

for i:=1 to 2 do

for j:=1 to 5 do

if b[i,j]>max then max:=b[i,j];

writeln('max=',max);

end.

------------------------------------

Ответ

введите массив В

5 6 7 8 4

9 8 7 6 -5

max=9

----------------------------------------------------------------------------------------------------

Пример (одномерные массивы)

Вычислить сумму действительных чисел.

Программу составим в трех вариантах: в варианте 1 массив не используется, в варианте 2 он описывается в разделе переменных, в варианте 3 массив определяется в разделе типов.

Для иллюстрации результата выполнения программы возьмем семь конкретных чисел 5.1, 6.4, 8,7, 1.9, 3.6, 2.0, 4,2

PROGRAM АЗО;

CONST N=7; (* КОЛИЧЕСТВО ЧИСЕЛ *)

VAR

A : REAL; (* ВВОДИМОЕ ЧИСЛО *)

SUM : REAL; (* СУММА *)

I: INTEGER; (* ПАРАМЕТР ЦИКЛА *)

BEGIN

SUM:=0;

WRITELN('ВВЕДИТЕ ЧИСЛА ЧЕРЕЗ ПРОБЕЛЫ:');

FOR 1:=1 TO N DO

BEGIN

READ(A);

SUM:=SUM +A

END;

WRITELN('----------------------------------');

WRITELN ('СУММА ЧИСЕЛ =', SUM:6:2 )

END.

Здесь каждое число вводится внутри цикла и прибавляется к накапливаемой сумме SUM. Значение переменной А изменяется внутри цикла. После выполнения всего цикла значение А равно последнему введенному числу. Для А отведена одна ячейка памяти ЭВМ, если условно считать, что действительное число занимает одну ячейку.

ВЫЧИСЛЕНИЕ СУММЫ, 2-й ВАРИАНТ

PROGRAM A31;

CONST N=7; (* КОЛИЧЕСТВО ЧИСЕЛ *)

VAR

A : ARRAY[1..N] OF REAL; (* МАССИВ ЧИСЕЛ *)

SUM : REAL; (* СУММА *)

I : INTEGER; (* ПАРАМЕТР ЦИКЛА *)

BEGIN

WRITELN('ВВЕДИТЕ МАССИВ ЧИСЕЛ ЧЕРЕЗ ПРОБЕЛЫ:');

FOR I:=1 ТО N DO

RЕAD(А[i] ) ;

SUM:=0;

FOR I:=1 ТО N DO

SUM:=SUM +A[I] ;

WRITELN('----------------------------------'):

WRITELN('СУММА ЧИСЕЛ = ‘, SUM:6:2 )

END.

Здесь в разделе переменных VAR явно описан массив А. Для массива выделяется память в количестве семи ячеек, т. е. для каждого числа одна ячейка. В разделе операторов с помощью цикла сначала вводятся все значения элементов массива А. Затем организуется новый цикл для вычисления суммы. Применение массива приводит к увеличению используемой памяти ЭВМ - вместо одной ячейки (см. вариант 1) здесь выделено семь ячеек памяти. В то же время значения элементов массива сохраняются в памяти ЭВМ, и их можно использовать и после окончания выполнения циклической части.

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

ВЫЧИСЛЕНИЕ СУММЫ, 3-й ВАРИАНТ

PROGRAM А32А;

CONST N=7; (* КОЛИЧЕСТВО ЧИСЕЛ *)

TYPE Т=ARRAY[1..N] OF REAL; (* ТИП МАССИВА *)

VAR

А:Т; (* МАССИВ *)

SUM:REAL; (* СУММА *)

I:INTEGER; (* ПАРАМЕТР ЦИКЛА *)

BEGIN

WR1TELN('ВВЕДИТЕ МАССИВ ЧИСЕЛ ЧЕРЕЗ ПРОБЕЛЫ:');

FOR I:=1 ТО N DO

READ(А[I]);

SUM:=0;

FOR I:=1TO N DO

SUM:=SUM +A[I] ;

WRITELN('----------------------------------');

WRITELN('СУММА ЧИСЕЛ = ', SUM:6:2 )

END.

Вариант З отличается от предыдущего только введением типа массива, что делает программу более эффективной

13

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]