Ввод элементов двумерного массива
…
for i:=1 to n do
for j:=1 to m do
readln(a[i,j]);
…
Данный фрагмент позволит ввести элементы массива по строкам.
Для ввода элементов массива по столбцам, достаточно в предыдущем фрагменте поменять местами внутренний и внешний циклы.
Вывод элементов двумерного массива
…
for i:=1 to n do
{begin}
for j:=1 to n do
write(a[I,j],‘ ‘);
{writeln;}
{end;}
…
1 2 3 4 5 1 2 3 4 5 1 2 3 4 5
Данный фрагмент позволит вывести элементы массива в виде матрицы.
Обработка двумерных массивов
Рассмотрим типовые задачи обработки двумерных массивов с использованием вложенных циклов.
Задача.
Составить программу подсчета суммы и произведения элементов двумерного массива вещественных чисел.
Таблица идентификаторов.
№ | Наименование переменной | Обозначения в программе |
Имя массива | a | |
Количество строк | n | |
Количество столбцов | m | |
Индексы массива | I,j | |
Сумма элементов | s | |
Произведение элементов | p |
Program matr;
Uses
Crt;
Var
a:array [1...10, 1...10] of real;
i, j, n, m: integer;
s,p :real;
Begin
Clrscr;
writeln(‘ Введите n<=10 , m<=10 ’);
Readln (n,m);
writeln(‘ Введите элементы массива по строкам ’);
for i:=1 to n do
for j:=1 to m do
readln(a[i, j]);
s:=0; p:=1;
{ поиск суммы и произведения }
for i:=1 to n do
for j:=1 to m do
Begin
s:=s + a[i,j];
p:=p * a[i,j];
End;
writeln(‘ Сумма элементов s=’,s:8:3);
writeln(‘ Произведение элементов p=’,p:8:3);
Readln;
End.
Задача.
Задана квадратная матрица целых чисел. Составить программу подсчета суммы элементов, расположенных над главной диагональю.
Таблица идентификаторов.
№ | Наименование переменной | Обозначения в программе |
Имя массива | a | |
Количество строк и столбцов | n | |
Индексы массива | I,j | |
Сумма элементов над главной диагональю | s |
Program matr_1;
Uses
Crt;
Var
a:array [1...10, 1...10] of real;
i, j, n, m: integer;
s,p :real;
Begin
Clrscr;
writeln(‘ Введите n<=10 , m<=10 ’);
Readln (n,m);
writeln(‘ Введите элементы массива по строкам ’);
for i:=1 to n do
for j:=1 to m do
readln(a[i,j]);
for i:=1 to 3 do
for j:=i +1 to 3 do
s:=s+a[i,j];
writeln('Сумма элементов s=', s);
Readln;
End.
Для ввода элементов массива используются вложенные циклы с указанием номера вводимого элемента.
Для поиска суммы элементов над главной диагональю во внутреннем цикле задан закон изменения параметра внутреннего цикла:
j:=i+1
Задача.
Задана целочисленная квадратная матрица. Определить является ли она симметричной относительно главной диагонали.
Таблица идентификаторов.
№ | Наименование переменной | Обозначения в программе |
Имя массива | a | |
Количество строк и столбцов | n | |
Индексы массива | I,j | |
Флажок | f |
programmatr_2;
Uses
Crt;
Var
a: array [1...10, 1...10] of integer;
i, j, n, f : integer;
Begin
Clrscr;
writeln(‘ Введите n<=10 ’);
Readln (n,m);
writeln(‘ Введите элементы массива по строкам ’);
for i:=1 to 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 (‘матрица не симметрична’);
Readln;
End.
При решении этой задачи сравниваются элементы расположенные над главной диагональю ( a[ i,j ] ) с элементами, расположенными под главной диагональю ( a[ j,i ] ) .
Дата добавления: 2017-06-02; просмотров: 842;