Посчитать матрицы по заданой формуле - Free Pascal
Формулировка задачи:
Даны 3 матрицы 4х4: A,B,C. Вычислить
(а именно нужно определить 2 процедцры: сложения матриц и умножения матриц и уже в главной программе их правильно вызвать)
Решение задачи: «Посчитать матрицы по заданой формуле»
textual
Листинг программы
{$mode objfpc}
const
size = 4;
type
TMatrix = array[1 .. size, 1 .. size] of double;
operator * (const a, b: TMatrix) m: TMatrix;
var i, j, k: integer;
begin
for i := 1 to size do
for j := 1 to size do begin
m[i, j] := 0;
for k := 1 to size do
m[i, j] := m[i, j] + a[i, k] * b[k, j]
end;
end;
operator + (const a, b: TMatrix) m: TMatrix;
var i, j: integer;
begin
for i := 1 to size do
for j := 1 to size do m[i, j] := a[i, j] * b[i, j];
end;
operator ** (const a: TMatrix; const pow: integer) m: TMatrix;
var i, j: Integer;
begin
if pow = 0 then begin
for i := 1 to size do
for j := 1 to size do
m[i, j] := Byte(i = j);
exit
end;
m := a;
for i := 1 to pred(pow) do
m := m * a;
end;
procedure matrixInput(const s : string; var m : TMatrix);
var i, j : Integer;
begin
writeln('Input matrix ' + s);
for i := 1 to size do
for j := 1 to size do
begin
write(s+'[', i, ',', j, '] = ');
readln(m[i, j]);
end;
end;
procedure matrixPrint(a: TMatrix);
var i, j: integer;
begin
for i := 1 to size do begin
for j := 1 to size do
write(a[i, j]:9:2);
writeln
end
end;
var
A, B, C : TMatrix;
Res: TMatrix;
begin
matrixInput('A', A);
matrixInput('B', B);
matrixInput('C', C);
writeln;
Res := A**2 + B**2 + A*B*C;
matrixPrint(Res)
end.
Объяснение кода листинга программы
- В начале кода определяются константы и типы данных, используемые в программе.
- Затем определяются два оператора: оператор умножения для матриц и оператор сложения для матриц.
- Далее определен оператор возведения в степень для матрицы.
- После этого определена процедура для ввода матрицы из консоли.
- Затем определена процедура для вывода матрицы на консоль.
- В основной части программы создаются три матрицы A, B и C, и с ними выполняются операции в соответствии с заданной формулой.
- Результат вычислений выводится на консоль.