Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2 семестр.pdf
Скачиваний:
79
Добавлен:
29.05.2015
Размер:
1.12 Mб
Скачать

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

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

var a:array [1..5] of array [1..6] of real; var a:array [1..5,1..6] of real;

Чаще всего при описании двумерного массива используют второй способ. Так же как и для одномерных массивов, для двумерных можно использовать отдельно описание нового типа массива, а затем описывать переменную, используя этот тип:

type matr=array [1..5,1..6] of integer; var a:matr;

Доступ к каждому отдельному элементу осуществляется обращением к имени массива с указанием индексов (первый индекс – номер строки, второй индекс – номер столбца). Все действия над элементами двумерного массива идентичны действиям над элементами линейного массива. Только для инициализации двумерного массива используется конструкция, когда один цикл for вложен в другой. Например:

for i:=1 to 5 do

for j:=1 to 6 do a[i,j]:=0;

При организации вложенных (сложных) циклов необходимо учитывать:

Все правила, присущие простому циклу, должны соблюдаться.

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

Внутренний цикл должен полностью входить в тело внешнего цикла. Пересечение циклов недопустимо.

6.2.1. Заполнение матрицы

Рассмотрим типичные варианты заполнения матрицы a, описанной выше.

Заполнение всех элементов матрицы случайными числами из диапазона 1 – 9 :

for i:=1 to 5 do

for j:=1 to 6 do a[i,j]:=random(9);

52

Заполнениевсехэлементовматрицыприпомощивводасклавиатуры: for i:=1 to 5 do

for j:=1 to 6 do begin

write(‘a[’,i,‘,’,j,‘]=’);

readln(a[i,j]);

end;

6.2.2. Вывод матрицы на экран

Вывести на экран матрицу 5 × 6 можно следующим образом: for i:=1 to 5 do

begin

for j:=1 to 6 do

write(a[i,j]:4); {вывод строки}

writeln;

{перевод на новую строку}

end;

 

6.2.3. Работа с матрицами

Работа с матрицами осуществляется также поэлементно.

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

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]:4);

writeln;

end;

end.

53

Пример 6.3. Задан двумерный массив В(10, 10), заполненный случайными числами из диапазона -10 – 10. Найти и вывести на экран произведение элементов побочной диагонали.

program massiv; uses crt;

var b:array[1..10,1..10] of integer; i,j,s:integer;

begin Clrscr;

for i:=1 to 10 do begin

for j:= 1 to 10 do begin

b[i,j]:=random(20)-10; write(b[i,j]:4);

end;

writeln;

end;

s:=1;

for i:=1 to 10 do s:=s*b[i,11-i];

writeln(‘Произведение = ’,s); end.

Пример 6.4. Ввести с клавиатуры матрицу В(5, 5) и поменять местами первый и последний столбец.

program mest;

var b:array[1..5,1..5] of integer; i,j,s:integer;

begin

for i:=1 to 5 do

for j:=1 to 5 do begin

write(‘b[’,i,‘,’,j,‘]=’);

readln(b[i,j]);

end; for i:=1 to 5 do

begin

for j:=1 to 5 do write(b[i,j]:4);

54

writeln;

end;

for i:=1 to 5 do begin

s:=b[i,1]; b[i,1]:=b[i,5]; b[i,5]:=s; end;

writeln;

writeln(‘Изменённая матрица’); writeln;

for i:=1 to 5 do begin

for j:=1 to 5 do write(b[i,j]:4);

writeln;

end;

end.

55

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