Дана действительная матрица размерности МхМ - 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.
Объяснение кода листинга программы
- В первой строке кода используется директива
uses crt;
, которая позволяет использовать функции и структуры, определенные в стандартной библиотеке языка Pascal ABC. - Переменная
a
объявлена как массив, содержащий действительные числа размером от 2 до 5 строк и каждой строке также соответствует массив из 5 чисел. - Переменные
m
,i
,j
,k
,imx
,jmx
,jmn
объявлены как байты (byte), они будут использоваться для хранения индексов строк и столбцов матрицы. - Переменные
mx
,sr
,mn
объявлены как действительные числа, они будут использоваться для хранения максимального значения матрицы и среднего значения. - В цикле
for
происходит заполнение матрицы. Для каждого элементаa[i,j]
выполняется чтение значения с помощьюreadln(a[i,j])
. - После завершения цикла
for
выводится исходная матрица. - Затем выполняется расчет максимального значения матрицы и его положения на главной диагонали. Если максимальное значение находится не на главной диагонали, выводится соответствующее сообщение и цикл прерывается с помощью
exit;
. - Далее вычисляется среднее значение для значений ниже главной диагонали.
- В цикле
for
происходит изменение значений элементов матрицы. Для каждого элементаa[i,j]
выполняется расчет нового значения с помощьюa[i,j]:=a[i,j]+sr
. - После завершения цикла
for
выводится измененная матрица. - В последнем цикле
for
происходит вывод значений элементов матрицы. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д