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

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

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

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

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

textual
Листинг программы
uses crt;
var a:array[1..5,1..5] of real;
    m,i,j,k,imx,jmx,jmn:byte;
    mx,sr,mn:real;
begin
write('Введите размер матрицы от 2 до 5 m=');
readln(m);
writeln('Введите элемнты матрицы, действительные числа');
for i:=1 to m do
for j:=1 to m do
 begin
  write('a[',i,',',j,']=');
  readln(a[i,j]);
 end;
clrscr;
writeln('Исходная матрица');
sr:=0;
k:=0;
for i:=1 to m do
 begin
  for j:=1 to m do
   begin
    write(a[i,j]:5:2);
    if j>m-i+1 then
     begin
      sr:=sr+a[i,j];
      k:=k+1;
     end;
    if(i=1)and(j=1)then
     begin
      mx:=a[i,j];
      imx:=i;
      jmx:=j;
     end
    else if a[i,j]>mx then
     begin
     mx:=a[i,j];
     imx:=i;
     jmx:=j;
    end;
   end;
  writeln;
 end;
 writeln('Максимальный элемент a[',imx,',',jmx,']=',mx:0:2);
 if imx<>jmx then
  begin
   write('Максимальный элемент не на главной диагонали');
   exit;
  end;
writeln('Максимальный элемент на главной диагонали');
sr:=sr/k;
writeln('Среднее значение ниже главной диагонали=',sr:0:2);
for i:=1 to m do
 begin
  jmn:=1;
  for j:=2 to m do
  if a[i,j]<a[i,jmn] then jmn:=j;
  a[i,jmn]:=a[i,jmn]+sr;
 end;
writeln('Измененная матрица');
for i:=1 to m do
 begin
  for j:=1 to m do
  write(a[i,j]:5:2);
  writeln;
 end;
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