06.12.2009, 13:09
общий
это ответ
Здравствуйте, Семашкина Надежда Сергеевна!
Решение задачи в приложении.
Приложение:
uses crt;
const n=10;{размер матриц}
type matr=array[1..n,1..n] of real;{их тип}
procedure Vvod(var mt:matr);{создание матриц}
var i,j:byte;
begin
for i:=1 to n do
for j:=1 to n do
mt[i,j]:=9*random;{числа берем небольшие, инче при умножении они окажутся очень большими}
end;
procedure Vyvod(var mt:matr; s:string);{вывод матриц на экран}
var i,j:byte;
begin
writeln('Матрица ',s);
for i:=1 to n do
begin
for j:=1 to n do
write(mt[i,j]:7:1);
writeln;
end;
writeln;
end;
function Sled(mt:matr):real;{вычисление суммы элементов главной диагонали - следа матрицы}
var sm:real;
i:byte;
begin
sm:=0;
for i:=1 to n do
sm:=sm+mt[i,i];{элементы главной диагонали}
Sled:=sm;
end;
procedure Kvadrat(m1:matr;var m2:matr);{возведение в квадрат - умножение матрицы на себя}
var k,j,i:byte;
begin
for k:=1 to n do
for j:=1 to n do
begin
m2[k,j]:=0;
for i:=1 to n do
m2[k,j]:=m2[k,j]+m1[k,i]*m1[i,j];{суммируем произведения элементов строк, на соответствующие элементы столбцов}
end;
end;
var a,b,c:matr;
i,j,m:byte;
s:string;
begin
clrscr;
randomize;
Vvod(a);{создаем матрицы}
Vvod(b);
Vyvod(a,'A:');{выводим на экран}
writeln('След матрицы А=',Sled(a):0:1);{вычисляем и выводим след}
writeln('Нажмите Enter...');
readln;
Vyvod(b,'B:');
writeln('След матрицы B=',Sled(b):0:1);
writeln('Нажмите Enter...');
readln;
if Sled(a)>Sled(b)then{срвниваем следы, который больше}
begin
s:='C=A^2:';{название новой матрицы}
Kvadrat(a,c);{выполняем умножение}
Vyvod(c,s);{выводим на экран}
end
else
begin
s:='C=A^2:';
Kvadrat(a,c);
Vyvod(c,s);
end;
readln
end.