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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.07.2009, 19:19   #11
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
{Из свойств определителя известно, что определитель матрицы
 порядка N может быть представлен в виде суммы N определителей N-1 
порядка (разложение по строке или столбцу). Предположим мы 
раскладываем по первому столбцу. При этом определитель равен сумме 
произведений элементов этого столбца на минор данного элемента 
матрицы и на -1 в степени суммы индексов элемента. Минор элемента а
[i,j] матрицы - это определитель матрицы, полученной вычеркиванием i-
той строки и j-того столбца.}
const n=4; { размерность матрицы }
type matr=array[1..n,1..n] of longint;
var a,b:matr;
   i,j,dt:longint;
procedure PrintMatr(m:matr;n:integer);
{ процедура вывода матрицы на экран }
var i,j:integer;
 begin
 for i:=1 to n do
   begin
   for j:=1 to n do
     write(m[i,j]:3);
   writeln;
   end;
 end;
procedure GetMatr(a:matr; var b:matr; m,i,j:integer);
{ Вычеркивание из матрицы строки и столбца }
var ki,kj,di,dj:integer;
 begin
 di:=0;
 for ki:=1 to m-1 do
   begin
   if (ki=i) then di:=1;
   dj:=0;
   for kj:=1 to m-1 do
     begin
     if (kj=j) then dj:=1;
     b[ki,kj]:=a[ki+di,kj+dj];
     end;
   end;
 end;
Function Determinant(a:matr;n:integer):longint;
{ Вычисление определителя матрицы }
var i,j,d,k:longint;
   b:matr;
 begin
 d:=0; k:=1;
 if (n<1) then
   begin
   writeln('Determinant: Cann''t run. N=',n); halt;
   end;
 if (n=1)
   then d:=a[1,1]
 else if (n=2)
   then d:=a[1,1]*a[2,2]-a[2,1]*a[1,2]
 else { n>2 }
   for i:=1 to n do
     begin
     GetMatr(a,b,n,i,1);
     {writeln('i=',i,' a[',i,',1]=',a[i,1]);
     PrintMatr(b,n-1);}
     d:=d+k*a[i,1]*Determinant(b,n-1);
     k:=-k;
     end;
 Determinant:=d;
 end;
begin
{ Заполнение матрицы случайными числами }
randomize;
for i:=1 to n do
for j:=1 to n do
 a[i,j]:=random(5);
{ Печать исходной матрицы }
PrintMatr(a,n);
{ Вычисление и вывод определителя }
dt:=Determinant(a,n);
writeln('=========');
writeln('Determinant=',dt);
end.
пользуйтесь и благодарите некоего программера с ником ТОХА
а вот функа от Frayd
Код:
{Вот функция которая считает определитель матрицы 7х7( тип matrix это 2-ву мерный масив [1..7,1..7] типа longint), можно подкоректировать и под другой размер.}
Function OPRED(A:matrix):real;
  var
     f,n,k: byte;
     t,opredelitel: real;
     B:array[1..7,1..7] of real;
  begin
     for i:= 1 to 7 do
        for j:= 1 to 7 do
    B[i,j]:= A[i,j];
     i:= 1;
     f:= 0;
     opredelitel:= 1;
     while i < 7 do begin
         if B[i,i] = 0 then begin
     for j:= i+1 to 7 do
         if B[j,i] <> 0 then
    break
 else
    inc(f);
     if f = 7-i then begin
         OPRED:= 0;
 exit
     end;
     for n:= 1 to 7 do begin
          t:= B[i,n];
  B[i,n]:= B[j,n];
      B[j,n]:= t
     end;
     opredelitel:= opredelitel*(-1)
 end;
 for j:= i+1 to 7 do
    for k:= 7 downto i do
       B[j,k]:= B[j,k]-B[i,k]*B[j,i]/B[i,i];
 inc(i)
      end;
      for n:= 1 to 7 do
        opredelitel:=opredelitel*B[n,n];
      OPRED:= opredelitel;
 end;
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 01.07.2009 в 19:22.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 01.07.2009, 19:19   #12
jihad60
Новичок
Джуниор
 
Регистрация: 01.07.2009
Сообщений: 7
По умолчанию

ну, чайник я, и не нужен мне этот делфи. вот я и прошу помощи.
если вам трудно просто так, я могу оплалить эту задачу.
мне протсо очень надо.

для одиночество в сети.
не получается. вставляю текст. и запускаю, ошибка какаято(

Последний раз редактировалось Stilet; 02.07.2009 в 08:59.
jihad60 вне форума Ответить с цитированием
Старый 01.07.2009, 19:34   #13
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

Код:
program Project3;

{$APPTYPE CONSOLE}

uses
  SysUtils;

const n=3; { размерность матрицы }
type matr=array[1..n,1..n] of real;
var a,b:matr;
   i,j:longint;
   dt:Real;
procedure PrintMatr(m:matr;n:integer);
{ процедура вывода матрицы на экран }
var i,j:integer;
 begin
 for i:=1 to n do
   begin
   for j:=1 to n do
     write(m[i,j]:6:3);
   writeln;
   end;
 end;
procedure GetMatr(a:matr; var b:matr; m,i,j:integer);
{ Вычеркивание из матрицы строки и столбца }
var ki,kj,di,dj:integer;
 begin
 di:=0;
 for ki:=1 to m-1 do
   begin
   if (ki=i) then di:=1;
   dj:=0;
   for kj:=1 to m-1 do
     begin
     if (kj=j) then dj:=1;
     b[ki,kj]:=a[ki+di,kj+dj];
     end;
   end;
 end;
Function Determinant(a:matr;n:integer):real;
{ Вычисление определителя матрицы }
var i,j,k:longint;
   d:Real;
   b:matr;
 begin
 d:=0; k:=1;
 if (n<1) then
   begin
   writeln('Determinant: Cann''t run. N=',n); halt;
   end;
 if (n=1)
   then d:=a[1,1]
 else if (n=2)
   then d:=a[1,1]*a[2,2]-a[2,1]*a[1,2]
 else { n>2 }
   for i:=1 to n do
     begin
     GetMatr(a,b,n,i,1);
     {writeln('i=',i,' a[',i,',1]=',a[i,1]);
     PrintMatr(b,n-1);}
     d:=d+k*a[i,1]*Determinant(b,n-1);
     k:=-k;
     end;
 Determinant:=d;
 end;
begin
{ Заполнение матрицы случайными числами }
randomize;
for i:=1 to n do
for j:=1 to n do
 Readln(a[i,j]);
{ Печать исходной матрицы }
PrintMatr(a,n);
{ Вычисление и вывод определителя }
dt:=Determinant(a,n);
writeln('=========');
writeln('Determinant=',dt:6:5);
readln;
end.
вот пожалуйста все работает!!!! исправлено!!! определитель вашей матрицы -274.25
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 01.07.2009 в 19:43.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 01.07.2009, 22:52   #14
jihad60
Новичок
Джуниор
 
Регистрация: 01.07.2009
Сообщений: 7
По умолчанию

оу.

Ну, спасибо, только так то оно не работает!
что должно быть на форме?

можно кинуть весь текст программы?
а то не получается! =(


девушка, подарю вам шестизнак! =)))

Последний раз редактировалось jihad60; 01.07.2009 в 23:18.
jihad60 вне форума Ответить с цитированием
Старый 02.07.2009, 09:01   #15
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Как это не работает?? Все работает на Ура. Запускаешь Делфи, создаешь новый проект Console Application Берешь код полнстью его вставляешь один-в-один и запустив вводишь числа матрицы.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужна помощь (задача с массивом)... Goldberg Паскаль, Turbo Pascal, PascalABC.NET 36 19.04.2011 20:31
Задача по файлам нужна помощь! RomT24 Помощь студентам 4 15.06.2009 21:30
Задача Whlie do нужна помощь shadowburn Паскаль, Turbo Pascal, PascalABC.NET 3 21.11.2008 19:06
[C] Задача на указатели . Нужна помощь shtkuh Помощь студентам 1 26.01.2008 08:47