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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 21.12.2010, 13:12   #1
president_ml
 
Регистрация: 05.12.2010
Сообщений: 9
Восклицание Программа на метод Гаусса

Подскажите пожалуйста почему выдаёт ошибку в кусочке
Код:
for i:=k+1 to n do
    begin
   (abs(a[i,k]))>max then begin
                         max:=abs(a[i,k]);
вот вся программа

Код:
program Metod_Gaussa_SLAU;
 uses crt;
 const
 n=100;
 eps=1E-10;
 type
 vector = array[1..n] of real;
 matrica= array[1..n,1..n] of real;

 var
 matr: matrica;
 i,j : integer;
 sv,neiz:vector;

 PROCEDURE wwod(i,j:integer);
 begin
 for i:=1 to n do
 begin
 for j:=1 to n+1 do
 write (matr[i,j],' ');
 writeln;
 end;
 end;
 procedure Gauss(a: matrica; n:integer; b:vector; var x:vector; max:real);
 var k,l,i,j:integer;
     c,s:real;
begin
  for k:=1 to n-1 do
  begin
   max:=abs(a[k,k]); l:=k;
   for i:=k+1 to n do
    begin
   (abs(a[i,k]))>max then begin
                         max:=abs(a[i,k]);
                         l:=i;
                         end;
    end;
   if l<>k then begin
                for j:=k to n do
                begin
                c:=a[k,j]; a[k,j]:=a[l,j]; a[l,j]:=c;
                end;
                c:=b[k]; b[k]:=b[l]; b[l]:=c;
                end;
   for i:=k+1 to n do begin
   for j:=k+1 to n do begin
                    a[i,j]:=a[i,j]-a[k,j]*a[i,k]/a[k,k];
                    end;
                    b[i]:=b[i]-b[k]*a[i,k]/a[k,k]; a[i,k]:=0;
                    end;
   end;


   x[n]:=b[n]/a[n,n];
   for i:=n-1 to 1 do begin
                      s:=0;
                      for j:=i+1 to n do
                      s:=s+a[i,j]*x[j];
                      x[i]:=(b[i]-s)/a[i,i];
                      end;
end;
BEGIN
 wwod(i,j);writeln;
 Gauss(matr,n,sv,neiz);
 for i:=1 to n do
 writeln('x[n]=',' ');
 readln;
End.
Заранее спасибо


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 21.12.2010 в 14:09.
president_ml вне форума Ответить с цитированием
Старый 21.12.2010, 14:16   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

лишних скобок накрутили непонятно для чего...
а ключевое слово if потеряли...

замените кусок кода на
Код:
   for i:=k+1 to n do
    begin
     if abs(a[i,k])>max then begin
                         max:=abs(a[i,k]);
                         l:=i;
                         end;
    end;
p.s. будет ещё ошибка при вызове функции Gauss - ибо не соответствует количество описанных (формальных) параметров и фактических (с которыми вызываете:
5 параметров:
procedure Gauss(a: matrica; n:integer; b:vector; var x:vector; max:real);
...
4-ре параметра:
Gauss(matr,n,sv,neiz);
Serge_Bliznykov вне форума Ответить с цитированием
Старый 21.12.2010, 14:49   #3
president_ml
 
Регистрация: 05.12.2010
Сообщений: 9
По умолчанию

спасибо огрромное, ВЫ меня спасли)
president_ml вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод Гаусса на C/C++ Passadobl Фриланс 4 21.10.2010 16:54
Метод Гаусса mbeats Общие вопросы C/C++ 5 01.01.2010 20:07
Безумно сложные задачки!!!! Метод Гаусса, итераций, метод половинного деления, задача Коши и т.д. Хомяк!!!!! Помощь студентам 4 08.07.2009 10:08