Если над главной диагональю минимальные элементы столбцов, то добавить всем элементам над ней среднее под ней - Pascal ABC
Формулировка задачи:
Дана действительная матрица размерности (n x n)
Если на главной диагонали стоят минимальные элементы столбцов, то ко всем элементам, расположенным над главной диагональю добавить среднее арифметическое элементов стоящих под главной диагональю. В противном случае матрицу оставить без изменения.
не совсем понимаю как это сделать, помогите!
Решение задачи: «Если над главной диагональю минимальные элементы столбцов, то добавить всем элементам над ней среднее под ней»
textual
Листинг программы
const n=4; m:array[1..n,1..n] of real=((1.2,2.5,3.5,4.0), (3.5,2.3,4.8,6.0), (5.2,6.2,2.6,4.9), (5.3,4.8,9.3,2.8)); var i,j,imn,k:integer; a:array[1..n,1..n] of real; s:real; begin a:=m; writeln('Исходная матрица'); for i:=1 to n do begin for j:=1 to n do write(a[i,j]:6:1); writeln; end; k:=0; for j:=1 to n do begin imn:=1; for i:=1 to n do if a[i,j]<a[imn,j] then imn:=i; if imn=j then inc(k); end; if k<>n then write('Минимальные элементы столбцов не все на главной диагонали') else begin writeln('Все минимальные элементы столбцов главной диагонали'); s:=0; k:=0; for i:=2 to n do for j:=1 to i-1 do begin s:=s+a[i,j]; k:=k+1; end; s:=s/k; writeln('Среднее арифметическое элементов ниже главной диагонали=',s:0:1); writeln('Измененная матрица'); for i:=1 to n do begin for j:=1 to n do begin if j>i then a[i,j]:=a[i,j]+s; write(a[i,j]:6:1); end; writeln; end; end; end.
Объяснение кода листинга программы
- Создается массив
m
с размерностьюn x n
, гдеn
- это количество строк и столбцов матрицы. Каждый элемент массиваm
представляет собой кортеж изn
чисел. - Создается переменная
i
типаinteger
для перебора строк матрицы и переменнаяj
типаinteger
для перебора столбцов матрицы. - Создается переменная
imn
типаinteger
для хранения текущего минимального элемента в текущем столбце. - Создается переменная
k
типаinteger
для подсчета количества минимальных элементов в столбцах. - Выводится исходная матрица с помощью цикла
for
. В каждой итерации цикла выводятся элементы матрицы с помощью циклаfor
. - Инициализируется переменная
k
равной нулю. Она будет использоваться для отслеживания количества минимальных элементов в столбцах. - Выполняется цикл
for
для каждой строки матрицы. Внутри цикла выполняется еще один циклfor
для каждого столбца матрицы. - Внутри внутреннего цикла проверяется условие
if a[i,j]<a[imn,j] then imn:=i
. Если текущий элементa[i,j]
меньше текущего минимального элементаa[imn,j]
, то обновляется значениеimn
наi
. Это означает, что текущий элементa[i,j]
становится новым минимальным элементом в текущем столбце. - Если
imn
равноj
, то увеличивается значениеk
на единицу. Это означает, что текущий столбец содержит все минимальные элементы. - После завершения внутреннего цикла для каждой строки матрицы, выполняется внешний цикл
for
для каждой строки матрицы. - Внутри внешнего цикла вычисляется среднее арифметическое элементов ниже главной диагонали. Для этого суммируются все элементы ниже главной диагонали и делятся на количество таких элементов.
- Выводится измененная матрица с помощью цикла
for
. В каждой итерации цикла выводятся элементы матрицы с помощью циклаfor
. - Выводится сообщение, указывающее, были ли все минимальные элементы столбцов на главной диагонали или нет.
- Если
k
не равноn
, то выводится сообщение, указывающее, что все минимальные элементы столбцов не находятся на главной диагонали. - Если
k
равноn
, то выводится сообщение, указывающее, что все минимальные элементы столбцов находятся на главной диагонали. - Вычисляется среднее арифметическое элементов ниже главной диагонали. Для этого суммируются все элементы ниже главной диагонали и делятся на количество таких элементов.
- Выводится сообщение, указывающее среднее арифметическое элементов ниже главной диагонали.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д