Дана действительная матрица размерности МхМ - Pascal ABC

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

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

Дана действительная матрица размерности МхМ Если максимальный элемент матрицы на главной диагонали, то найти среднее арифметическое элементов, стоящих над побочной диагональю и добавить его к минимальным элементам каждой строки матрицы. В противном случае оставить без изменений. Пожалуйста, помогите.

Решение задачи: «Дана действительная матрица размерности МхМ»

textual
Листинг программы
  1. uses crt;
  2. var a:array[1..5,1..5] of real;
  3.     m,i,j,k,imx,jmx,jmn:byte;
  4.     mx,sr,mn:real;
  5. begin
  6. write('Введите размер матрицы от 2 до 5 m=');
  7. readln(m);
  8. writeln('Введите элемнты матрицы, действительные числа');
  9. for i:=1 to m do
  10. for j:=1 to m do
  11.  begin
  12.   write('a[',i,',',j,']=');
  13.   readln(a[i,j]);
  14.  end;
  15. clrscr;
  16. writeln('Исходная матрица');
  17. sr:=0;
  18. k:=0;
  19. for i:=1 to m do
  20.  begin
  21.   for j:=1 to m do
  22.    begin
  23.     write(a[i,j]:5:2);
  24.     if j>m-i+1 then
  25.      begin
  26.       sr:=sr+a[i,j];
  27.       k:=k+1;
  28.      end;
  29.     if(i=1)and(j=1)then
  30.      begin
  31.       mx:=a[i,j];
  32.       imx:=i;
  33.       jmx:=j;
  34.      end
  35.     else if a[i,j]>mx then
  36.      begin
  37.      mx:=a[i,j];
  38.      imx:=i;
  39.      jmx:=j;
  40.     end;
  41.    end;
  42.   writeln;
  43.  end;
  44.  writeln('Максимальный элемент a[',imx,',',jmx,']=',mx:0:2);
  45.  if imx<>jmx then
  46.   begin
  47.    write('Максимальный элемент не на главной диагонали');
  48.    exit;
  49.   end;
  50. writeln('Максимальный элемент на главной диагонали');
  51. sr:=sr/k;
  52. writeln('Среднее значение ниже главной диагонали=',sr:0:2);
  53. for i:=1 to m do
  54.  begin
  55.   jmn:=1;
  56.   for j:=2 to m do
  57.   if a[i,j]<a[i,jmn] then jmn:=j;
  58.   a[i,jmn]:=a[i,jmn]+sr;
  59.  end;
  60. writeln('Измененная матрица');
  61. for i:=1 to m do
  62.  begin
  63.   for j:=1 to m do
  64.   write(a[i,j]:5:2);
  65.   writeln;
  66.  end;
  67. end.

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

  1. В первой строке кода используется директива uses crt;, которая позволяет использовать функции и структуры, определенные в стандартной библиотеке языка Pascal ABC.
  2. Переменная a объявлена как массив, содержащий действительные числа размером от 2 до 5 строк и каждой строке также соответствует массив из 5 чисел.
  3. Переменные m, i, j, k, imx, jmx, jmn объявлены как байты (byte), они будут использоваться для хранения индексов строк и столбцов матрицы.
  4. Переменные mx, sr, mn объявлены как действительные числа, они будут использоваться для хранения максимального значения матрицы и среднего значения.
  5. В цикле for происходит заполнение матрицы. Для каждого элемента a[i,j] выполняется чтение значения с помощью readln(a[i,j]).
  6. После завершения цикла for выводится исходная матрица.
  7. Затем выполняется расчет максимального значения матрицы и его положения на главной диагонали. Если максимальное значение находится не на главной диагонали, выводится соответствующее сообщение и цикл прерывается с помощью exit;.
  8. Далее вычисляется среднее значение для значений ниже главной диагонали.
  9. В цикле for происходит изменение значений элементов матрицы. Для каждого элемента a[i,j] выполняется расчет нового значения с помощью a[i,j]:=a[i,j]+sr.
  10. После завершения цикла for выводится измененная матрица.
  11. В последнем цикле for происходит вывод значений элементов матрицы.
  12. Конец программы.

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


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

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

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

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

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

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