В каждой из трех матриц найти максимальный элемент и разделить на него каждый отрицательный элемент матрицы - Turbo Pascal
Формулировка задачи:
Задание:В каждой из трех матриц Х, Y и Z найти максимальный элемент и разделить на него каждый отрицательный элемент матрицы.
Больше всего интересует функция с нахождением максимального элемента и деление на него кажого отрицательного элемента.Помогите пожалуйста.
Решение задачи: «В каждой из трех матриц найти максимальный элемент и разделить на него каждый отрицательный элемент матрицы»
textual
Листинг программы
{ В каждой из трех матриц Х, Y и Z найти максимальный элемент и разделить на него каждый отрицательный элемент матрицы.} uses crt; const nmax=100; {максимальный размер матрицы} type mas=array [1..nmax,1..nmax] of real; var x,y,z:mas;{тип матрицы} p:real; m:integer; procedure generate_matrix(m:integer; var a:mas); var i,j:integer; begin for i:=1 to m do begin for j:=1 to m do begin a[i,j]:=random*m -m div 2; write(a[i,j]:6:2); end; writeln; end; end; function find_max(a:mas):real; var max:real; i,j:integer; begin max:=a[1,1];{пусть максимальный-первый} for i:=1 to m do for j:=1 to m do if a[i,j]>max then max:=a[i,j];{если найдем больше - он максимальный} find_max:=max; end; function delete_neg(q:real; var a:mas):real; var i,j:integer; begin for i:=1 to m do begin for j:=1 to m do begin if a[i,j]<0 then a[i,j]:=a[i,j]/q; write(a[i,j]:6:2); end; writeln; end; end; begin randomize; clrscr; repeat write('Размер матрицы до ',nmax,' m='); readln(m); until m in [1..nmax]; writeln('Матрица X:'); generate_matrix(m,x); p:=find_max(x); writeln('Максимальный элемент=',p:6:2); writeln('Преобразованная матрица X:'); delete_neg(p,x); write('Нажмите enter '); readln; clrscr; writeln('Матрица Y:'); generate_matrix(m,y); p:=find_max(y); writeln('Максимальный элемент=',p:6:2); writeln('Преобразованная матрица Y:'); delete_neg(p,y); write('Нажмите enter '); readln; clrscr; writeln('Матрица Z:'); generate_matrix(m,z); p:=find_max(z); writeln('Максимальный элемент=',p:6:2); writeln('Преобразованная матрица Z:'); delete_neg(p,z); write('Нажмите enter '); readln; end.
Объяснение кода листинга программы
- В функции
generate_matrix
используется циклfor
, который выполняетсяm
раз (гдеm
- это введенный пользователем размер матрицы). Внутри этого цикла создается вложенный циклfor
, который также выполняетсяm
раз и заполняет матрицу случайными числами. Каждое число в матрице умножается наm
и делится на 2, чтобы получить отрицательное значение. - Функция
find_max
находит максимальное значение в матрице. Для этого она использует два вложенных циклаfor
, которые проверяют каждый элемент матрицы. Если текущий элемент больше предыдущего максимального значения, то оно обновляется. - Функция
delete_neg
принимает матрицу и коэффициент, на который делятся отрицательные элементы. Она проходит по каждому элементу матрицы и если он отрицательный, то делит его на заданный коэффициент. - Основной цикл программы состоит из трех вызовов функций
generate_matrix
,find_max
иdelete_neg
для матрицX
,Y
иZ
. После каждого вызова выводится преобразованная матрица. - В конце программы выводится запрос на ввод символа новой строки, чтобы перейти к следующему шагу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д