Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal] Квадрат матрицы с наименьшим следом


Автор: Splendid 27.12.2007, 09:56
Помогите задачку решить, очень срочно надо - завтра зачет...

Даны две квадратные вещественные матрицы 10-го порядка. Напечатать квадрат той из них, в которой наименьший след (сумма диагональных элементов), считая, что такая матрица одна.

Пожалуйста!!!

Автор: Splendid 27.12.2007, 11:17
Помогите...пожалуйста..

Автор: Hang 27.12.2007, 11:39
Надеюсь я тебе помог  smile 
Код

uses crt;
const n=10;
var i,j,k: Integer;
    a,b,c: array [1..10,1..10] of Real;
    sum1,sum2,s: Real;
begin
  clrscr;
  randomize;
  for i:=1 to n do
  for j:=1 to n do
  begin
    a[i,j]:=Random(11); {ot 0 do 10}
    b[i,j]:=Random(11);
  end;
  {vivod matrizi A:}
  writeln('matriza #1');
  for i:=1 to n do
  begin
    for j:=1 to n do
      write('  ',a[i,j]:5:2);
    writeln;
  end;
  writeln;
  {vivod matrizi B}
  writeln('matriza #2');
  for i:=1 to n do
  begin
    for j:=1 to n do
      write('  ',b[i,j]:5:2);
    writeln;
  end;
  writeln;
  sum1:=0;
  for i:=1 to n do
  for j:=1 to n do
  if i=j then
  begin
    sum1:=sum1+a[i,j];
    sum2:=sum2+b[i,j];
  end;
  writeln('sled matrizi #1: ',sum1:5:2);
  writeln('sled matrizi #2: ',sum2:5:2);
  writeln;
  if sum1<sum2 then
  begin
    writeln('kvadrat 1-oi matrizi');
    for i:=1 to n do
    for j:=1 to n do
    begin
      s:=0;
      for k:=1 to n do
        s:=s+a[i,k]*a[k,j];
      c[i,j]:=s;
    end;
  end
  else
  begin
    writeln('kvadrat 2-oi matrizi');
    for i:=1 to n do
    for j:=1 to n do
    begin
      s:=0;
      for k:=1 to n do
        s:=s+b[i,k]*b[k,j];
      c[i,j]:=s;
    end;
  end;
  {vivod matrizi C}
  for i:=1 to n do
  begin
    for j:=1 to n do
      write('  ',c[i,j]:5:2);
    writeln;
  end;
  readln;
end.


Добавлено через 10 минут и 25 секунд
Splendid 
Для расчета следа матрица надо было сосчитать сумму элементов по двум диагоналям и только по главной?
В проге я посчитал только сумму главной диагонали ( \ )

Автор: Hang 27.12.2007, 12:01
Splendid 
Если нужно сосчитать сумму элементов 2-х диагоналей (для вычисления следа), то вместо кода:
Код

if i=j then


напиши:
Код

if (i=j) or (i=n-j+1) then


Добавлено через 30 секунд
Желаю удачи!!!

Автор: Splendid 27.12.2007, 13:29
Hang, Огромное спасибо!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)