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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2018, 19:13   #1
Illtry
Пользователь
 
Регистрация: 09.02.2018
Сообщений: 22
По умолчанию Исправление ошибок - Delphi

Здравствуйте. Моя проблема такова: первая часть кода работает без проблем, матрица строится как нужно, но когда я пытаюсь приделать к этому нахождение определителя начинают сыпаться ошибки. Похоже я приделываю его совсем не рядом. Поможете подправить?


Код:
{$APPTYPE CONSOLE}


uses
  SysUtils;

const N1=10;
type Matrice=array[1..N1,1..N1] of real;

var
 i, n, m, j,res: integer ;
 A, B: array of integer;
 S: array of array of integer;

    A1:matrice;
        I1,J1,N2:integer;
        D:real;

begin
  write('n=');
  readln(n);
  setlength(a,n);
  write('m=');
  readln(m);
  setlength(b,m);
    for i:=0 to n do
     readln(a[i]);
    for i:=0 to m do
     readln(b[i]);
  SetLength(S, m+n, n+m);

 for i:=0 to (n+m)-1 do
 begin
  if i in[0..m] then
   begin
    for j:=0 to (n+m)-1 do
     begin
      if j in[i..n+i] then s[i,j]:=a[n-j+i] else s[i,j]:=0;    //Рабочий кусок 
      write(s[i,j]:3);
     end;
   end
  else if i in[m..m+n] then
   begin
    for j:=1 to n+m do
     begin
      if j in [i-m..i] then  s[i,j]:=b[i-j] else s[i,j]:=0;
      write(s[i,j]:3);
     end;
   end;
   writeln;
end;






  Function Det(A1:Matrice;N:integer):real;
var
        B:matrice;
        I1:integer;
        T,Mn,W:real;
 Function Minor(var C:matrice;S:Matrice;N2,I1,J1:integer):real;

        var
                Im,Jm,Ia,Ja,Nm:integer;

        begin
                Nm:=N2-1;
                Im:=1;
                Ia:=1;
                while Im<=Nm do
                        if Ia<>I then
                        begin
                                Jm:=1; Ja:=1;
                                while Jm<=Nm  do
                                        if Ja<>J then
                                        begin
                                                C[Im,Jm]:=A1[Ia,Ja];
                                                Ja:=Ja+1; Jm:=Jm+1;
                                        end
                                else 
                                        Ja:=Ja+1;
                                Ia:=Ia+1;
                                Im:=Im+1;
                        end
                        else
                                Ia:=Ia+1;
        end; 

begin
        if N=1 then
                Det:=S[N,N];
        if N=2 then 
                Det:=S[1,1]*S[2,2]-S[2,1]*S[1,2];
        if N>2 then
        begin
                W:=0;
                for I1:=1 to N2 do
                begin
                        Mn:=Minor(B,A1,N2,I1,1);
                        if (I1 mod 2)=1 then
                        begin
                                T:=Det(B,N2-1);
                                W:=W+T*A1[I1,1];
                        end
                        else
                        begin
                                T:=Det(B,N2-1);
                                W:=W-T*A1[I1,1];
                        end;
                end;
                Det:=W;
        end;
end;


begin

   N2:=m+n;

for I:=1 to N2 do
        begin
        D:=Det(A1,N2);
        Writeln('Opredelitel raven: ',D:7:4);
        readln;
end.

Последний раз редактировалось Аватар; 16.03.2018 в 19:20.
Illtry вне форума Ответить с цитированием
Старый 17.03.2018, 02:40   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

жэсть какая. я не буду это читать.
задание где?
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 17.03.2018, 14:30   #3
Illtry
Пользователь
 
Регистрация: 09.02.2018
Сообщений: 22
По умолчанию

Построить матрицу Сильвестра и найти её определитель. По отдельности обе программы работают (матрица Сильвестра и нахождение определителя), но вместе получается действительно жэсть
Цитата:
Сообщение от min@y™ Посмотреть сообщение
жэсть какая. я не буду это читать.
задание где?
Illtry вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Исправление ошибок С# PROkaZZZniK Помощь студентам 5 15.11.2011 17:16
исправление ошибок toldo Microsoft Office Word 2 09.01.2011 15:22
Прошу опробовать исправленную PGF 1.3 - автоматическое исправление структурных ошибок в исходниках Delphi Vasil54 Софт 0 01.05.2009 21:00
Просьба опробовать новую PGF 1.3 - автоматическое исправление структурных ошибок в исходниках Delphi. Vasil54 Софт 0 09.04.2009 12:05
Просьба опробовать новую версию PGF - автоматическое исправление структурных ошибок в исходниках Delphi. Vasil54 Софт 0 05.12.2008 20:06