Программа
CONST QuantityString=4; { Количество строк матрицы }
QuantityColumn=4; { Количество солбцов матрицы }
QuantityStringD=4; { Количество строк матрицы }
QuantityColumnD=3; { Количество солбцов матрицы }
QuantityStringE=QuantityColumnD; { Количество строк матрицы }
QuantityColumnE=2; { Количество солбцов матрицы }
QuantityStringF=QuantityStringD; { Количество строк матрицы }
QuantityColumnF=QuantityColumnE; { Количество солбцов матрицы }
TYPE Matrix4x4Type=array [1..QuantityString,1..QuantityColumn] of integer;
MatrixDType=array [1..QuantityStringD,1..QuantityColumnD] of integer;
MatrixEType=array [1..QuantityStringE,1..QuantityColumnE] of integer;
MatrixFType=array [1..QuantityStringF,1..QuantityColumnF] of integer;
VAR
A:Matrix4x4Type; { Матрица }
B:Matrix4x4Type; { Матрица }
C:Matrix4x4Type; { Матрица }
D:MatrixDType; { Матрица }
E:MatrixEType; { Матрица }
F:MatrixFType; { Матрица }
Min,Max:integer; { Минимальный и максимальный элементы }
PROCEDURE AddMatrix (A,B:Matrix4x4Type;var C:Matrix4x4Type);
{ Процедура сложения матриц }
Var i,j:word; { Счетчики }
Begin
for i:=1 to QuantityString do { Цикл просмотра строк матрицы }
for j:=1 to QuantityColumn do { Цикл прсмотра элементов матрицы }
C[i,j]:=A[i,j]+B[i,j]
End;
PROCEDURE Swap(var A,B:integer); { Процедура взаимного обмена }
Var Buf:integer; { Буфер переноса }
Begin
Buf:=A;
A:=B;
B:=Buf
End;
PROCEDURE ChangeColumnMatrix(var B:Matrix4x4Type; Column1, Column2:word);
{ Процедура перестановки столбцов матрицы }
Var i:word; { Счетчик }
Begin
for i:=1 to QuantityString do { Цикл перестановки элементов матрицы }
Swap(B[i,Column1],B[i,Column2]) { Перестановка элементов }
End;
PROCEDURE ChangeStringMatrix (var B:Matrix4x4Type; String1, String2:word);
{ Процедура перестановки строк матрицы }
Var j:word; { Счетчик }
Begin
for j:=1 to QuantityColumn do { Цикл перестановки элементов матрицы }
Swap (B[String1,j],B[String2,j]) { Перестановка элемента }
End;
PROCEDURE GetMinMaxElementMatrix (B:Matrix4x4Type;var Min, Max:integer);
{ Процедура поиска максимального и минимального элементов матрицы }
Var i,j:word; { Счетчики }
Begin
Max:=B[1,1]; { Начальное определение максимального элемента }
Min:=B[1,1]; { Начальное определение минимального элемента }
for i:=1 to QuantityString do { Цикл просмотра строк матрицы }
for j:=1 to QuantityColumn do { Цикл прсмотра элементов матрицы }
if B[i,j]>Max
then Max:=B[i,j] { Если текущий элемент превосходит максимальный,
то - переопределение максимального }
else if B[i,j]<Min then Min:=B[i,j] { иначе - если текущий элемент
меньше минимального, то - переопределение минимального }
End;
PROCEDURE InputMatrix (var B:Matrix4x4Type); { Процедура ввода матрицы }
Var i,j:word; { Счетчики }
Begin
for i:=1 to QuantityString do { Цикл ввода строк матрицы }
for j:=1 to QuantityColumn do { Цикл ввода элементов матрицы }
begin
{ Write('Введите элемент [',i,',',j,'] ');
{ Вывод приглашения ввести элемент матрицы }
{ ReadLn(B[i,j]); { Ввод элемента матрицы }
B[i,j]:=i*10+j
end
End;
PROCEDURE InputMatrixD (var B:MatrixDType); { Процедура ввода матрицы }
Var i,j:word; { Счетчики }
Begin
for i:=1 to QuantityStringD do { Цикл ввода строк матрицы }
for j:=1 to QuantityColumnD do { Цикл ввода элементов матрицы }
begin
{ Write('Введите элемент [',i,',',j,'] ');
{ Вывод приглашения ввести элемент матрицы }
{ ReadLn(B[i,j]); { Ввод элемента матрицы }
B[i,j]:=i*10+j
end
End;
PROCEDURE InputMatrixE (var B:MatrixEType); { Процедура ввода матрицы }
Var i,j:word; { Счетчики }
Begin
for i:=1 to QuantityStringE do { Цикл ввода строк матрицы }
for j:=1 to QuantityColumnE do { Цикл ввода элементов матрицы }
begin
{ Write('Введите элемент [',i,',',j,'] ');
{ Вывод приглашения ввести элемент матрицы }
{ ReadLn(B[i,j]); { Ввод элемента матрицы }
B[i,j]:=i*10+j
end
End;
PROCEDURE MultiplyMatrix (D:MatrixDType;E:MatrixEType;var F:MatrixFType);
{ Процедура умножения матриц }
Var i,j,k:word; { Счетчики }
Begin
for i:=1 to QuantityStringD do { Цикл просмотра строк матрицы }
for j:=1 to QuantityColumnE do { Цикл прсмотра элементов матрицы }
begin
F[i,j]:=0; { Обнуление элемента }
for k:=1 to QuantityColumnD do
{ Цикл формирования элементов матрицы произведения }
F[i,j]:=F[i,j]+D[i,k]*E[k,j]
end
End;
PROCEDURE OutputMatrix (B:Matrix4x4Type); { Процедура вывода матрицы }
Var i,j:word; { Счетчики }
Begin
for i:=1 to QuantityString do { Цикл вывода строк матрицы }
begin
for j:=1 to QuantityColumn do { Цикл вывода элементов матрицы }
Write (B[i,j],' '); { Вывод элемента матрицы }
WriteLn { Вывод конца строки }
end
End;
PROCEDURE OutputMatrixD (B:MatrixDType); { Процедура вывода матрицы }
Var i,j:word; { Счетчики }
Begin
for i:=1 to QuantityStringD do { Цикл вывода строк матрицы }
begin
for j:=1 to QuantityColumnD do { Цикл вывода элементов матрицы }
Write (B[i,j],' '); { Вывод элемента матрицы }
WriteLn { Вывод конца строки }
end
End;
PROCEDURE OutputMatrixE (B:MatrixEType); { Процедура вывода матрицы }
Var i,j:word; { Счетчики }
Begin
for i:=1 to QuantityStringE do { Цикл вывода строк матрицы }
begin
for j:=1 to QuantityColumnE do { Цикл вывода элементов матрицы }
Write (B[i,j],' '); { Вывод элемента матрицы }
WriteLn { Вывод конца строки }
end
End;
PROCEDURE OutputMatrixF (B:MatrixFType); { Процедура вывода матрицы }
Var i,j:word; { Счетчики }
Begin
for i:=1 to QuantityStringF do { Цикл вывода строк матрицы }
begin
for j:=1 to QuantityColumnF do { Цикл вывода элементов матрицы }
Write (B[i,j],' '); { Вывод элемента матрицы }
WriteLn { Вывод конца строки }
end
End;
PROCEDURE TransponatorMatrix (var B:Matrix4x4Type);
{ Процедура транспонирования матрицы }
Var i,j:word; { Счетчики }
Begin
for i:=1 to QuantityString do { Цикл просмотра строк матрицы }
for j:=i to QuantityColumn do { Цикл прсмотра элементов матрицы }
Swap (B[i,j],B[j,i]) { Перестановка элементов }
End;
PROCEDURE ProcessMatrix (var B:Matrix4x4Type); { Процедура просмотра матрицы }
Var i,j:word; { Счетчики }
Begin
for i:=1 to QuantityString do { Цикл просмотра строк }
for j:=1 to QuantityColumn do { Цикл просмотра элементов }
begin
end
End;
BEGIN
WriteLn; { Пропуск строки }
InputMatrix(A); { Ввод матрицы }
WriteLn; { Пропуск строки }
WriteLn(' Исходная матрица: '); { Вывод заголовка }
OutputMatrix(A); { Вывод матрицы }
ChangeStringMatrix(A,1,4); { Перемена строк в матрице }
WriteLn; { Пропуск строки }
WriteLn(' Перемена строк: '); { Вывод заголовка }
OutputMatrix(A); { Вывод матрицы }
ChangeColumnMatrix(A, 2, 1); { Перемена столбцов в матрице }
WriteLn; { Пропуск строки }
WriteLn(' Перемена столбцов: '); { Вывод заголовка }
OutputMatrix(A); { Вывод матрицы }
TransponatorMatrix(A); { Транспонирование матрицы }
ReadLn;
WriteLn; { Пропуск строки }
WriteLn( ' Транспонированная матрица: '); { Вывод заголовка }
OutputMatrix(A); { Вывод матрицы }
GetMinMaxElementMatrix(A,Min,Max);
{ Получение минимального и максимального элементов матрицы }
WriteLn; { Пропуск строки }
WriteLn('Min=',Min,' Max=',Max);
{ Вывод минимального и максимального элементов матрицы }
B:=A; { Копирование матрицы }
TransponatorMatrix(B); { Транспонирование матрицы }
WriteLn; { Пропуск строки }
WriteLn(' Транспонированная матрица: '); { Вывод заголовка }
OutputMatrix(B); { Вывод матрицы }
AddMatrix(A,B,C); { Сложение матриц }
WriteLn; { Пропуск строки }
WriteLn(' Сумма матриц: '); { Вывод заголовка }
OutputMatrix(C); { Вывод матрицы }
ReadLn;
InputMatrixD(D); { Ввод матрицы }
WriteLn; { Пропуск строки }
WriteLn(' Матрица D: '); { Вывод заголовка }
OutputMatrixD(D); { Вывод матрицы }
InputMatrixE(E); { Ввод матрицы }
WriteLn; { Пропуск строки }
WriteLn(' Матрица E: '); { Вывод заголовка }
OutputMatrixE(E); { Вывод матрицы }
MultiplyMatrix(D,E,F); { Умножение матриц }
WriteLn; { Пропуск строки }
WriteLn(' Произведение матриц: '); { Вывод заголовка }
OutputMatrixF(F) { Вывод матрицы }
END.
Бесплатные примеры программ
Примеры написанных программ
Помощь студентам по программированию