Решенные задачи на языке Паскаль
Условие задачи прислали на e-mail.
Даны три квадратные матрицы третьего порядка. Вывести на экран ту из них, норма которой наименьшая. В качестве нормы матрицы взять максимум модулей ее элементов. Нахождение нормы матрицы оформить в виде процедуры.
const p=3; {порядок матрицы} type tip_matr=array[1..p,1..p]of integer; {тип для матрицы} var a,b,c:tip_matr; {три матрицы } i,j:integer; {для цикла } n_a,n_b,n_c:integer; {норма матрицы } {процедура - получить норму матрицы m - матрица в которой находится норма n - сюда записывается значение нормы матрицы } PROCEDURE get_norma(m:tip_matr; var n:integer); var max:integer; BEGIN max:=m[1,1]; for i:=1 to p do for j:=1 to p do if ABS(m[i,j])>max then max:=ABS(m[i,j]); n:=max; END; {процедура печатает матрицу на экран} PROCEDURE print_array(m:tip_matr); BEGIN for i:=1 to p do begin for j:=1 to p do write(' ',m[i,j]:3); writeln; end; writeln; END; BEGIN randomize; for i:=1 to p do {загрузка значений элементов во все матрицы} for j:=1 to p do begin a[i,j]:=random(50)-random(50); b[i,j]:=random(50)-random(50); c[i,j]:=random(50)-random(50); end; writeln('ИСХОДНЫЕ МАТРИЦЫ'); writeln('Матрица A:'); print_array(a); writeln('Матрица B:'); print_array(b); writeln('Матрица C:'); print_array(c); {получить длякаждой матрицы её норму} get_norma(a,n_a); get_norma(b,n_b); get_norma(c,n_c); writeln('Матрица с наименьшей нормой:'); if (n_a <= n_b)and(n_a <= n_c) then print_array(a) else if (n_b <= n_a)and(n_b <= n_c) then print_array(b) else if (n_c <= n_b)and(n_c <= n_a) then print_array(a); readln; END.Замечание! Если я правильно понял: норма матрицы - это максимальное значение элемента матрицы взятое по модулю. В противном случае, если норма матрицы это что-то другое, то процедуру PROCEDURE get_norma(m:tip_matr; var n:integer); нужно изменить.
Скачать исходник