Задача 243 на Pascal
Даны три квадратные матрицы третьего порядка. Вывести на экран ту из них, норма которой наименьшая. В качестве нормы матрицы взять максимум модулей ее элементов. Нахождение нормы матрицы оформить в виде процедуры.
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); нужно изменить.