Перемножить матрицы - Pascal ABC (131350)

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

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

Написал прогу с помощью процедур, препод просит написать теперь с помощью функции. Помогите пожалуйста, не разберусь никак. Заданы двумерные массивы A, B, C одинаковых размерностей. Вычислить A*B, B*C, A*C. Найти максимальный элемент в каждой получившийся матрицы, помогите плз) Заранее спасибо.

Решение задачи: «Перемножить матрицы»

textual
Листинг программы
program matr;
 
type mas=array[1..3,1..3] of integer;
 
function  pr(x,y:mas):mas;
var
i,j,k:integer;
s:integer;
begin
for i:=1 to 3 do
for j:=1 to 3 do
 begin
  s:=0;
  for k:=1 to 3 do
  s:=s+x[i,k]*y[k,j];
  result[i,j]:=s;
 end;
end;
 
function maximum(z:mas):integer;
var i,j:integer;
begin
result:=z[1,1];
for i:=1 to 3 do
for j:=1 to 3 do
if z[i,j]>result then result:=z[i,j];
end;
 
function vvod:mas;
var i,j:integer;
begin
for i:=1 to 3 do
for j:=1 to 3 do
result[i,j]:=random(20);
end;
 
function vivod(x:mas):byte;
var i,j:integer;
begin
for i:=1 to 3 do
 begin
  for j:=1 to 3 do
  write(x[i,j]:4);
  writeln;
 end;
result:=0;
end;
var a,b,c,d,e,f:mas;
    a1,b1,c1,d1,e1,f1:byte;
begin
randomize;
a:=vvod;
writeln('a');
a1:=vivod(a);
b:=vvod;
writeln('b');
b1:=vivod(b);
c:=vvod;
writeln('c');
c1:=vivod(c);
writeln('a*b');
d:=pr(a,b);
d1:=vivod(d);
writeln('max=',maximum(d));
writeln('b*c');
e:=pr(b,c);
e1:=vivod(e);
writeln('max=',maximum(e));
writeln('a*c');
f:=pr(a,c);
f1:=vivod(f);
writeln('max=',maximum(f));
end.

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

Список действий в коде:

  1. Объявление типа массива mas и функции pr, которая принимает два массива этого типа и возвращает массив этого типа.
  2. Внутри функции pr объявление трёх вложенных циклов, которые перебирают элементы массивов x и y.
  3. Вложенные циклы выполняют умножение элементов матриц x и y, сохраняя результат в массив s.
  4. Результат умножения записывается в элемент массива result.
  5. Объявление функции maximum, которая принимает массив z и возвращает максимальное значение элемента этого массива.
  6. Внутри функции maximum объявление двух вложенных циклов, которые перебирают элементы массива z.
  7. Если элемент z[i,j] больше текущего максимального значения, то обновляется значение текущего максимального значения.
  8. Объявление функции vvod, которая возвращает случайный массив.
  9. Внутри функции vvod объявление двух вложенных циклов, которые заполняют массив случайными числами.
  10. Объявление функции vivod, которая принимает массив и возвращает его в виде последовательности строк.
  11. Внутри функции vivod объявление двух вложенных циклов, которые перебирают элементы массива.
  12. Каждый элемент выводится на экран с помощью функции write.
  13. Создание шести массивов a, b, c, d, e, f.
  14. Вызов функции vvod для каждого из массивов a, b, c.
  15. Вывод содержимого каждого массива на экран с помощью функции vivod.
  16. Вычисление произведения массивов a и b, сохранение результата в массив d.
  17. Вычисление произведения массивов b и c, сохранение результата в массив e.
  18. Вычисление произведения массивов a и c, сохранение результата в массив f.
  19. Вычисление максимального значения в массиве d и вывод его на экран.
  20. Вычисление максимального значения в массиве e и вывод его на экран.
  21. Вычисление максимального значения в массиве f и вывод его на экран.

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


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

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

12   голосов , оценка 4 из 5
Похожие ответы