Найти max элементы в матрицах А и В (MaxA и MaxB соответственно) - Free Pascal

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

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

Найти max элементы в матрицах А и В (MaxA и MaxB соответственно). Если MaxA>MaxB, то вычислить C=A*B, иначе вычислить C=B*A. Вывести: А, В, А1, В1, S. В4х4, где Вij={0, если i не равно j 1, иначе i=1..4, j=1..4

Решение задачи: «Найти max элементы в матрицах А и В (MaxA и MaxB соответственно)»

textual
Листинг программы
  1. const
  2.   n=4;
  3. type tarray=array[1..n,1..n] of integer;
  4. var a,b,c:tarray;
  5.     i,j,max1,max2:integer;
  6. begin
  7. max1:=-999;
  8. randomize;
  9. writeln('massiv A');
  10. for i:=1 to n do begin
  11.   for j:=1 to n do begin
  12.     a[i,j]:=random(18)-9;
  13.     write(a[i,j],' ');
  14.     if a[i,j]>max1 then max1:=a[i,j];
  15.     end;
  16.   writeln;
  17.   end;
  18. writeln('max1=',max1,'');
  19. writeln('massiv B');
  20. for i:=1 to n do
  21.   for j:=1 to n do
  22.     b[i,j]:=0;
  23. for i:=1 to n do begin
  24.   for j:=1 to n do begin
  25.     if i=j then begin
  26.       b[i,j]:=1;
  27.       end;
  28.     write(b[i,j],' ');
  29.     max2:=1;
  30.     end;
  31.   writeln;
  32.   end;
  33. writeln('max2=',max2,'');
  34. if max1=max2 then writeln('max1=max2') else begin
  35.   if max1>max2 then begin
  36.     writeln('max1>max2');
  37.     writeln('massiv C');
  38.     for i:=1 to n do begin
  39.       for j:=1 to n do begin
  40.         c[i,j]:=a[i,1]*b[1,j]+a[i,2]*b[2,j]+a[i,3]*b[3,j]+a[i,4]*b[4,j];
  41.         write(c[i,j],' ');
  42.         end;
  43.       writeln;
  44.       end;
  45.     end else begin
  46.     writeln('max1<max2');
  47.     writeln('massiv C');
  48.     for i:=1 to n do begin
  49.       for j:=1 to n do begin
  50.         c[i,j]:=b[i,1]*a[1,j]+b[i,2]*a[2,j]+b[i,3]*a[3,j]+b[i,4]*a[4,j];
  51.         write(c[i,j],' ');
  52.         end;
  53.       writeln;
  54.       end;
  55.     end;
  56.   end;
  57. readln;
  58. end.

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

  1. В начале программы объявляются константы и переменные:
    • n - размерность матрицы (4х4).
    • tarray - тип матрицы (массив размерности 1..n,1..n).
    • a,b,c - переменные этого типа.
    • i,j,max1,max2 - целочисленные переменные для работы с циклами.
  2. Инициализация:
    • max1 устанавливается в -999, чтобы начальное значение максимального элемента было некорректным.
    • randomize для инициализации генератора случайных чисел.
    • writeln('massiv A') - вывод заголовка для первой матрицы.
    • for i:=1 to n do begin - внешний цикл по строкам матрицы.
    • for j:=1 to n do begin - внутренний цикл по столбцам матрицы.
    • a[i,j]:=random(18)-9; - генерация случайного числа от -9 до 18 для элемента матрицы.
    • write(a[i,j],' '); - вывод элемента матрицы с пробелом после него.
    • if a[i,j]>max1 then max1:=a[i,j]; - проверка, является ли текущий элемент максимальным и обновление значения max1, если это так.
    • end; - выход из внутреннего цикла.
    • writeln; - переход на новую строку после вывода всех элементов строки.
    • end; - выход из внешнего цикла.
    • writeln('max1=',max1,''); - вывод значения max1 и завершающего символа.
    • Аналогично вышеуказанному алгоритму, обрабатывается вторая матрица b, но вместо случайных чисел используются единицы для элементов по диагонали.
    • max2:=1; - инициализация max2 единицей, так как все элементы матрицы b равны единице.
    • writeln('max2=',max2,''); - вывод значения max2 и завершающего символа.
    • Если max1 не равно max2, то выполняется одна из двух ветвей условного оператора:
    • Если max1 больше max2, то выполняется первая ветвь:
    • writeln('max1>max2'); - вывод сообщения о том, что max1 больше max2.
    • writeln('massiv C'); - вывод заголовка для третьей матрицы.
    • for i:=1 to n do begin - внешний цикл по строкам матрицы.
    • for j:=1 to n do begin - внутренний цикл по столбцам матрицы.
    • c[i,j]:=a[i,1]*b[1,j]+a[i,2]*b[2,j]+a[i,3]*b[3,j]+a[i,4]*b[4,j]; - вычисление элемента третьей матрицы как сумма произведений соответствующих элементов первых двух матриц.
    • write(c[i,j],' '); - вывод элемента матрицы с пробелом после него.
    • end; - выход из внутреннего цикла.
    • writeln; - переход на новую строку после вывода всех элементов строки.
    • end; - выход из внешнего цикла.
    • readln; - чтение строки от пользователя для завершения программы.
  3. Ввод и вывод управляются функциями readln и writeln, которые обеспечивают корректный обмен данными между программой и пользователем.

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


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

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

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

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

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

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