Дана действительная матрица размерности МхМ - 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происходит вывод значений элементов матрицы. - Конец программы.