Посчитать матрицы по заданой формуле - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Даны 3 матрицы 4х4: A,B,C. Вычислить (а именно нужно определить 2 процедцры: сложения матриц и умножения матриц и уже в главной программе их правильно вызвать)

Решение задачи: «Посчитать матрицы по заданой формуле»

textual
Листинг программы
  1. {$mode objfpc}
  2.  
  3. const
  4.   size = 4;
  5.  
  6. type
  7.   TMatrix = array[1 .. size, 1 .. size] of double;
  8.  
  9. operator * (const a, b: TMatrix) m: TMatrix;
  10. var i, j, k: integer;
  11. begin
  12.   for i := 1 to size do
  13.     for j := 1 to size do begin
  14.       m[i, j] := 0;
  15.       for k := 1 to size do
  16.         m[i, j] := m[i, j] + a[i, k] * b[k, j]
  17.     end;
  18. end;
  19.  
  20. operator + (const a, b: TMatrix) m: TMatrix;
  21. var i, j: integer;
  22. begin
  23.   for i := 1 to size do
  24.     for j := 1 to size do m[i, j] := a[i, j] * b[i, j];
  25. end;
  26.  
  27. operator ** (const a: TMatrix; const pow: integer) m: TMatrix;
  28. var i, j: Integer;
  29. begin
  30.   if pow = 0 then begin
  31.     for i := 1 to size do
  32.       for j := 1 to size do
  33.         m[i, j] := Byte(i = j);
  34.     exit
  35.   end;
  36.  
  37.   m := a;
  38.   for i := 1 to pred(pow) do
  39.     m := m * a;
  40. end;
  41.  
  42. procedure matrixInput(const s : string; var m : TMatrix);
  43. var i, j : Integer;
  44. begin
  45.   writeln('Input matrix ' + s);
  46.   for i := 1 to size do
  47.     for j := 1 to size do
  48.     begin
  49.       write(s+'[', i, ',', j, '] = ');
  50.       readln(m[i, j]);
  51.     end;
  52. end;
  53.  
  54. procedure matrixPrint(a: TMatrix);
  55. var i, j: integer;
  56. begin
  57.   for i := 1 to size do begin
  58.     for j := 1 to size do
  59.       write(a[i, j]:9:2);
  60.     writeln
  61.   end
  62. end;
  63.  
  64. var
  65.   A, B, C : TMatrix;
  66.   Res: TMatrix;
  67.  
  68. begin
  69.   matrixInput('A', A);
  70.   matrixInput('B', B);
  71.   matrixInput('C', C);
  72.   writeln;
  73.   Res := A**2 + B**2 + A*B*C;
  74.   matrixPrint(Res)
  75. end.

Объяснение кода листинга программы

  1. В начале кода определяются константы и типы данных, используемые в программе.
  2. Затем определяются два оператора: оператор умножения для матриц и оператор сложения для матриц.
  3. Далее определен оператор возведения в степень для матрицы.
  4. После этого определена процедура для ввода матрицы из консоли.
  5. Затем определена процедура для вывода матрицы на консоль.
  6. В основной части программы создаются три матрицы A, B и C, и с ними выполняются операции в соответствии с заданной формулой.
  7. Результат вычислений выводится на консоль.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 4.2 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы