Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
28
Добавлен:
10.12.2013
Размер:
107.52 Кб
Скачать

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

Двумерный массив можно представить в виде матрицы..

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

a - имя массива;

n, m - количество строк и столбцов в массиве.

Размер массива - nm.

a[i, j] - элемент стоящий на пересечении i-ой строки и j-го столбца.

Каждый элемент определяется двумя индексами.

a[i, i] - элементы главной диагонали.

a[i, 2] - элементы второго стлбца.

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

Задача 1.

Составить программу подсчета суммы элементов над главной диагональю в двумерном массиве.

Program matrix;

const

n=10;

m=10;

var

a: array [1…n, 1…m] of real;

i, j: integer; nk, mk: integer;

s: real;

begin s:=0;

writeln (' введите размер массива m, n);

readln (nk, mk);

{Ввод массива:}

for i:=1 to nk do

for j:=1 to mk do

begin

writeln ('a(', i, ', ', j, ')=');

readln (a[i, j]);

end;

for i:=1 to nk do

for j:=i to mk do

s: s+a[i, j];

writeln('s=', s);

end.

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

i - параметр внешнего цикла;

j - параметр внутреннего цикла;

i - меняется медленнее j.

Элементы массива необходимо вводить по строкам.

Задача 2:

Поменять местами элементы первого и последнего столбцов.

Program prim;

var

a: array [1...10, 1...10] of real;

i, j, n, m: integer; p:=real;

begin

readln

{ввод}

for i:=1 to n do

for j:=1 to m do readln (a[i, j]);

for i:=1to n do

{обмен}

begin

p:=a[i, 1];

a[i, 1]: a[i, m];

a[i, m]:=p;

end;

{вывод}

for i:=1 to n do

for j:=1 to mj do

begin

writeln (a[i, j]);

writeln;

end;

end.

Элементы необходимо вводить по строкам. Элементы выводим по строкам, между строками - пробел.

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

Задача3.

Задана целочисленная матрица (квадратная) a(nn). Определить является ли она симметричной относительно главной диагонали. f = 0 - признак симметричности.

Program pr;

var

a: array [1...10, 1...10] of integer;

f, i, j, n: integer;

begin

readln (n);

for i:=1to n do

for j:=1 to n do readln (a[i, j]);

f:=0

for i:=1 to n do

for j:=i to n do

if a [i, j]<>a[j, i] then f:=1;

if f =0 then writeln (‘ матрица симметрична’)

else writeln (‘матрица не симметрична’);

end.

Задача 4.

Задана целочисленная матрица a (mn). Образовать одномерный b(m), где каждый b( j ) = произведению элементов j-ого столбца.

program ...;

var

a: array [1...10, 1...10] of integer;

b: array [1...10] of integer;

i, j, n, m: integer;

begin

readln (m, n);

for i:=1 to n do

for j:=1 to m do begin

writeln (‘введите элементы’,i,’стр.’);

readln (a[i, j]);

end;

for j:=1 to m do

begin

накапливается произведение элементов одного столбца

b[ j]:=1;

for i:=1 to n do

b[ j]:= b[ j] * a[i, j];

end;

for j:=1 to m do

writeln (b[ j]);

end.

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

Задача 5.

Задана целочисленная матрица a(mn). Упорядочить элементы каждой строки по возрастанию.

Program pr1;

var

a: array [1...10, 1...10] of integer;

i, j, m, n, f, p: integer;

begin

readln (n, m);

for i:=1 to n do

for j:=1 to m do readln (a[i, j]);

{внешний цикл}

for i:=1 to n do

{внутренний цикл}

repeat

f:=0

for j:=1 to m-1 do

if a[i, j] >a[i, j+1] then

begin

p:= a[i, j];

a[i, j]=a[i, j+1];

a[i, j+1]:=p;

f:=1;

end;

until f =0;

for i:=1 to n do

for j:=1 to m do

writeln (a[i, j]);

end.

Во внешнем цикле переходим от строки к строке. Во внутреннем цикле упорядочиваются элементы одной строки.

f =0 - признак того, что всае элементы данной строки упорядочены.

Соседние файлы в папке Лекции