Дана действительная матрица размерности МхМ - 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
происходит вывод значений элементов матрицы. - Конец программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д