Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB4.DOC
Скачиваний:
3
Добавлен:
12.02.2015
Размер:
207.87 Кб
Скачать

Двумерные массивы

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

Var A: array[1..30, 1..7] of byte;

Рассмотрим пример работы с двумерными массивами.

Описанная выше таблица может быть представлена в виде набора элементов строк ( 30) и столбцов ( 7 ):

Массив значений можно, например, задать с использованием функции Random, например:

for i:= 1 to N do for j:= 1 to M do A[i, j]:= random(4)+2;

Для вывода элементов массива "A" на экран удобно использовать вложенный цикл:

for i:= 1 to N do

begin writeln; for j:= 1 to M do write(A[i,j]:7, ' _ _') end;

Для расчета массива "SS" - сумм "M" элементов в каждой из "N" строк массива "A" (NxM) можно применить операторы:

for i:= 1 to N do

begin SS[i]:= 0;

for j:= 1 to M do SS[i]:= SS[i] + A[i, j] end;

Здесь для каждого индекса "i" от 1 до N происходит суммирование элементов A[i, j] по индексу "j" от 1 до M.

При модификации массива "A" изменяется расположение данных в исходном массиве, например, в случае вставки данных из линейного массива "B" в колонку с номером "M1" необходимо сдвинуть данные в колонках J >= M1 используя операторы:

for i:= 1 to N do begin

for j:=M+1 downto M1+1 do A[i,j]:=A[i,j-1]; A[i,M1]:=B[i] end;

При создании новых массивов согласно некоторым условиям выбираются данные из элементов исходного массива. Например, для создания массива "В" из четных столбцов массива "A" можно использовать операторы:

for j:= 1 to M do If (j Mod 2) = 0 then

for i:= 1 to N do B[i,j Div 2]:= A[i,j];

Для создания массива "В", состоящего из строк массива "A", удовлетворяющих условию A[i,1] > C, где C - заданное число, можно использовать операторы:

k:= 0;

for i:= 1 to N do

If A[i,1] > C then begin k:= k + 1; for j:= 1 to M do B[k,j]:= A[i,j] end;

Пример 1.

Организация ввода элементов одномерного массива с клавиатуры.

PROGRAM Primer_1;

const K=5; { Количество элементов в массиве }

type M = Array [1...К] of Integer; { Описание типа массива}

var A:M;

PROCEDURE Wwod_Hass (var S:M); {вв.с клавиатуры эл.массива}

var I: Integer;

BEGIN

WrlteLn ('Введите элементы массива А: ');

For i:=1 to К do

begin Write ('Введите ',i, 'элемент массива '};

ReadLn(S[i]) end

END;

PROCEDURE Wywod_Mass (S:M); {выв. на экран эл. массива}

var i: Integer;

BEGIN

Write ('Вот Ваш массив: ');

For i:=1 to К do Write (S[i],' ')

END;

BEGIN

Wwod_Mass (A); { Вызов процедуры ввода элементов массива }

Wywod_Hass (A) { Вызов процедуры вывода элементов массива}

END

Пример 2.

Организация ввода элементов двухмерного массива с клавиатуры

PROGRAM Primer_2;

const M = 2; { Количество строк в массиве }

N = 3; { Количество столбцов в массиве }

type Т = Array [1..M,1..N] of Integer; {типа массива}

var A: T;

PROCEDURE Wwod_Mass (var S. T); {вв. с клав-ры эл. массива}

var i,j:Integer;

BEGIN

WriteLn ('Введите массив: ");

For i:= 1 to M do

For j:= 1 to N do begin

Write (-Введите S[-,i, ,j, ']: '); ReadLn (S[i,J]) end

ENd;

PROCEDURE Wywod_Mass (S: T); {выв на экран эл. массива }

var i,j: Integer;

BEGIN

WriteLn ('Вот Ваш массив: ');

For i:=1 to M do begin

For j:= 1 to N do Write (S[i,j], ' '); WriteLn end

END;

BEGIN

Wwod_Mass (A); { Вызов процедуры ввода элементов массива }

Wywod Mass (A) { Вызов процедуры вывода элементов массива }

END.

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