Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.03.2009, 09:06   #1
Lampard
 
Регистрация: 16.02.2009
Сообщений: 5
По умолчанию произведение матриц

народ,делаю произведение матриц,но он выдает ошибку на детерминанте,подскажите.Вот мой код:
Код:
uses crt;
const n=3;
type
        vector=array[1..n] of real;
        matrix=array[1..n] of vector;
var
        i,j,k:integer;
        a,b,c:matrix;
procedure zapmatr(var x:matrix);
        begin
        for i:=1 to n do
                for j:=1 to n do
                read(x[i,j]);
        end;
procedure determinant(var d,t,y,u:integer);
          begin
               for i:=1 to n do
                  for j:=1 to n do
                   begin
                        t:=sqr(-1)*a[1,1]*(a[2,2]*a[3,3]-a[3,2]*a[2,3]);
                        y:=(-1)*a[1,2]*(a[2,1])*a[3,3]-a[3,1]*a[2,3]);
                        u:=1*(a[2,1]*a[3,2]-a[3,1]*a[2,2]);
                        d:=a+b+c;
                        writeln('Determinant= ',d);
                   readln;
                   end.
procedure zapmatr1(var x:matrix);
        begin
                clrscr;
                for i:=1 to n do
                    for j:=1 to n  do
                    begin
                        read(x[i,j]);
                        x[i,j]:=x[i,j]/d;
                    end;
        end;
procedure vivmatr(var x:matrix);
        begin
        for i:=1 to n do
        begin
        for j:=1 to n do
                        write(x[i,j]:6:1);
        writeln;
      end;
  end;
begin
     clrscr;
     zapmatr(a);
     determinant;
     zapmatr1(b);
     for i:=1 to n do
        for j:=1 to n do
        begin
                for k:=1 to n do
                c[i,j]:=c[i,j]+a[i,k]*b[k,j];
        end;
  clrscr;
  writeln('          Matrica 1');
  vivmatr(a);
  writeln('          Matrica 2');
  vivmatr(b);
  writeln('          Rezul`tat');
  vivmatr(c);
  readkey;
end.

Последний раз редактировалось Lampard; 28.03.2009 в 10:12.
Lampard вне форума Ответить с цитированием
Старый 28.03.2009, 13:48   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вы объявляете процедуру:
Код:
procedure determinant(var d,t,y,u:integer);
а вызываете ее без параметров:
Код:
determinant;
Так и объявите переменные не как формальные параметры:
Код:
procedure determinant;
var d,t,y,u:real;
begin
Вот в этом куске:
Код:
  t:=sqr(-1)*a[1,1]*(a[2,2]*a[3,3]-a[3,2]*a[2,3]);
 y:=(-1)*a[1,2]*(a[2,1])*a[3,3]-a[3,1]*a[2,3]);
 u:=1*(a[2,1]*a[3,2]-a[3,1]*a[2,2]);
Вы присваиваете значение вещественного типа целочисленной переменной.

А здесь:
Код:
 d:=a+b+c;
вообще складываете 3 матрицы и пытаетесь присвоить то, что получилось переменной типа integer.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 28.03.2009, 14:05   #3
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Цитата:
sqr(-1)*
Это вообще круто!
Цитата:
делаю произведение матриц,но он выдает ошибку на детерминанте
А вообще зачем определитель при умножении матриц?
puporev вне форума Ответить с цитированием
Старый 30.03.2009, 19:00   #4
Lampard
 
Регистрация: 16.02.2009
Сообщений: 5
По умолчанию

Цитата:
Сообщение от puporev Посмотреть сообщение
Это вообще круто!

А вообще зачем определитель при умножении матриц?
определитель нужен чтобы найти обратную матрицу,и потом умножить ее на матрицу первоначального вида,и должна появиться еденичная матрица
Lampard вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработка Матриц(Упорядочивание Элементов,Вывод На Экран Матриц При Условии...) timepoka Помощь студентам 8 01.07.2011 13:20
Вычислить произведение P кубов трех чисел a, b и c, если их сумма меньше нуля, произведение P модулей NoUserName Помощь студентам 3 01.03.2009 18:10
произведение всех чисел апрол Помощь студентам 3 08.12.2008 19:00
Произведение двух матриц 010 Паскаль, Turbo Pascal, PascalABC.NET 5 03.06.2008 11:33
Произведение элементов массива gamer123 Помощь студентам 5 19.01.2008 22:02