Ввод или вывод матриц на языке программирования Паскаль выполняются с использованием вложенных циклов, при этом в список ввода/вывода помещается переменная с индексом.
Вводить матрицы в Паскале можно по элементам или по строкам
For j:=1 to n do Read(x[i, j]);
-2
3
. . .
5
Begin
For j:=1 to n do Read(x[i, j]);
Readln;
End;
-2 3 6 2
. . .
4 2 1 7
Аналогично можно записать процедуры вывода, но при этом необходимо предусмотреть разделительные пробелы и форматы выводимых данных.
For i:=1 to n do
Begin
For j:=1 to n do Write(x[i, j]:4);
Writeln;
End;
Для отладки программ с матрицами часто удобно использовать генераторы случайных чисел. Рассмотрим это на примерах.
Пример №12.1. Сформировать матрицу случайных целых чисел в диапазоне -10..10 и найти ее максимальный элемент. Программу написать на языке Паскаль.
Текст программы
Program м3;
Uses CRT;
Const n=4; m=5;
k1=10;
k2=k1*2+1;
Type matr =array[1..n,1..m] of integer;
Var
a :matr;
i, f, ma :integer;
Begin
ClrScr;
Randomize;
Writeln('Исходная матрица:');
For i:=1 to n do
Begin
For j:=1 to m do
Begin
f:=random(k2);
a[i, j]:=k1-f;
Write(a[i,j]:3,' ':3);
End;
Writeln;
End;
ma:=a[1, 1];
For i:=1 to n do
For j:=1 to m do
If a[i, j]>ma then ma:=a[i, j];
Writeln;
Writeln('Результат:');
Writeln('ma=',ma);
Repeat Until KeyPressed
End.
Пример 12.2. Найти сумму положительных элементов элемент в каждом столбце матрицы, заданной в файле inp.txt.
4 -3 5 -7 -8
3 9 -1 -2 6
-3 6 -5 4 -2
-4 -5 2 7 -3
Текст программы
Program ma11;
{Найти сумму положительных элементов элемент в каждом столбце матрицы}
Uses CRT;
Const
n = 4; m=5;
Type
vec =array[1..m] of integer;
mat =array[1..n] of vec;
t =text;
Var
a : mat;
max : vec;
ma : integer;
i,j : byte;
f1 : t;
Begin
ClrScr;
Assign(f1,'inp.txt');Reset(f1);
Writeln('Исходный масив:');
For i:=1 to n do
Begin
For j:=1 to m do
Begin
Read(f1,a[i,j]);
Write(a[i,j]:5);
End;
Readln(f1);Writeln
End;
Writeln;
for j:=1 to m do
Begin
ma:=a[1,j];
for i:=1 to n do
If a[i,j]>ma then ma:=a[i,j];
max[j]:=ma;
End;
Writeln('Результат:');
for j:=1 to m do Write(max[j]:6);
Readln;
end.
Результат работы программы:
Исходный массив:
4 -3 5 -7 -8
3 9 -1 -2 6
-3 6 -5 4 -2
-4 -5 2 7 -3
Результат:
4 9 5 7 6
Пример 12.3. Найти сумму положительных элементов элемент в каждой строке матрицы, заданной в файле inp.txt.
4 -3 5 -7 -8
3 9 -1 -2 6
-3 6 -5 4 -2
-4 -5 2 7 -3
Текст программы
Program ma1;
{Найти сумму положительных элементов в каждой строке матрицы}
Uses CRT;
Const
n = 4; m=5;
Type
vec =array[1..n] of integer;
mat =array[1..n,1..m] of integer;
t =text;
Var
a : mat;
sp : vec;
s : integer;
i,j : byte;
f1 : t;
Begin
ClrScr;
Assign(f1,'inp.txt');Reset(f1);
Writeln('Исходный массив:');
For i:=1 to n do
Begin
For j:=1 to m do
Begin
Read(f1,a[i,j]);
Write(a[i,j]:5);
End;
Readln(f1);Writeln
End;
Writeln;
for i:=1 to n do
Begin
s:=0;
for j:=1 to m do
If a[i,j]>0 then s:=s+a[i,j];
sp[i]:=s;
End;
Writeln('Результат:');
for i:=1 to n do Write(sp[i]:6);
Readln;
end.
Результат работы программы:
Исходный массив:
4 -3 5 -7 -8
3 9 -1 -2 6
-3 6 -5 4 -2
-4 -5 2 7 -3
Результат:
9 18 10 9
Пример 12.4. Найти сумму отрицательных элементов в каждой строке матрицы а(5х4).
Текст программы
Program ran_arr;
{Найти сумму отрицательных элементов в каждой строке}
Uses CRT;
Const
n = 5; m=4;
k1 = 10;
k2 = 2*k1+1;
Type
vec =array[1..n] of integer;
mat =array[1..n,1..m] of integer;
Var
arr_mat : mat;
arr_vec : vec;
s : integer;
i,j,f : byte;
Begin
ClrScr;
Randomize;
Writeln('Генерируем исходный масив');
For i:=1 to n do
Begin
For j:=1 to m do
Begin
f:=Random(k2);
arr_mat[i,j] := k1-f;
Write(arr_mat[i,j]:6);
end;
Writeln;
End;
for i:=1 to n do
Begin
s:=0;
for j:=1 to m do If arr_mat[i,j]<0 then s:=s+arr_mat[i,j];
arr_vec[i]:=s
End;
Writeln('Результат:');
for i:=1 to n do Write(arr_vec[i]:6);
Readln
end.
Результат работы программы:
Генерируем исходный масив
-3 9 9 9
4 5 -4 2
3 7 10 3
10 1 -7 8
10 2 -6 -9
Результат:
-3 -4 0 -7 -15
Пример 12.5. Найти минимальный и максимальный элемент матрицы а(4х3).
Текст программы
Program ms;
{Найти минимальный и максимальный элемент матрицы а(4х3)}
Uses CRT;
Const
n = 4; m = 3;
Type
matr = array[1..n,1..m] of integer;
Var
X : matr;
Max,Min : integer;
i,j : byte;
Begin
ClrScr;
Writeln('Введите X(4,3):');
For i:=1 to n do
For j:=1 to m do
Begin
Write ('X[',i,',',j,']='); Read(X[i,j]);
End;
{ Поиск максимума: }
Max:=X[1,1];
Min:=X[1,1];
For i:=1 to n do
For j:=1 to m do
Begin
If x[i,j]>max then max:=x[i,j];
If x[i,j]<min then min:=x[i,j];
End;
Writeln(^G'Максимум=',Max,^M^J'Минимум=',Min);
Repeat Until KeyPressed
End.
Результат работы программы:
Введите X(4,3):
X[1,1]=1
X[1,2]=4
X[1,3]=5
X[2,1]=6
X[2,2]=7
X[2,3]=6
X[3,1]=5
X[3,2]=6
X[3,3]=7
X[4,1]=8
X[4,2]=9
X[4,3]=1
Максимум=9
Минимум=1