Введення або виведення матриць на мові програмування Паскаль виконуються з використанням вкладених циклів, при цьому в список вводу/виводу поміщається мінлива з індексом.
Вводити матриці в Паскале можна за елементами або за рядками
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
-5 -4 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
Результат:
9 5 4 6 7
Приклад 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. Знайти суму негативних елементів у кожному рядку матриці а(х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