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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.10.2014, 22:54   #1
IHORRR
 
Регистрация: 11.10.2014
Сообщений: 4
По умолчанию Метод Гауса

помогите пожалуйста, уже не знаю что с етим делать... переверял по 200 раз
в независимости от того что ввожу (даже если все числа - целые) пишит такое "'is not valid floating number'


вот код
Код:
procedure TForm1.Button3Click(Sender: TObject);
Type Matrix=Array[1..10,1..10] of real;
  Vec=Array[1..10] of real;
Var A: Matrix;
  X,B:Vec;
  i,j,N:integer;
  R:real;

Procedure Gause(A:Matrix; B:Vec; N: integer; X:Vec);
 Var i,j,k:integer;
  R:real;
 Begin
  if N=1 then
    if (Abs(A[1,1])<1E-7) then
      begin
        Label8.Caption:='Система є виродженою';
        //ShowModal
      end
    else
      X[1]:=B[1]/A[1,1];
  For i:=1 to N-1 do
    begin
      k:=i;
      R:=Abs(A[i,i]);
       For j:=i+1 to N do
        if abs(A[j,i]) >= R then
          begin
            k:=j;
            R:=Abs(A[j,i])
          end;
        if R<=1E-7 then
          Label8.Caption:='Система є виродженою';
       if k<>i then
        begin
          R:=B[k];
          B[i]:=R;
          for j:=i to N do
            begin
              R:=A[k,j];
              A[k,i]:=A[i,j];
              A[i,j]:=R;
            end;
        end;
        R:=A[i,i];
        B[i]:=B[1]/R;
        FOR j:=1 to N do
          A[i,j]:=A[i,j]/R;
        for k:=i+1 to N do
          begin
            R:=A[k,i];
            B[k]:=B[k]-R*B[i];
            A[k,i]:=0;
            for j:=i+1 to N do
              A[k,j]:=A[k,j]- R*A[i,j];
          end;
        end;
         if ABS(A[N,N])<=1E-7 then
           Label8.Caption:='Система є виродженою';
       X[N]:=B[N]/A[N,N];
        FOR i:=N-1 downto 1 do
        begin
        R:=B[1];
         for j:=i+1 to N do
          R:=R-A[i,j]*X[j];
          X[i]:=R;
          end;
end;

begin
 N:=ScrollBar1.Position;
 For i:=0 to N do
   for j:=0 to N do
   StringGrid4.Cells[i,j]:=StringGrid1.Cells[i,j];
    A[i+1,j+1]:=strtofloat(StringGrid1.Cells[i,j]);
 for i:=0 to N do
  B[i+1]:=strtofloat(StringGrid2.Cells[i,0]);
Gause(A,B,N,X);
 for i:=0 to N do
  StringGrid3.Cells[i,0]:=floattostr(X[i+1]);
end;
IHORRR вне форума Ответить с цитированием
Старый 11.10.2014, 23:35   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Цитата:
A[i+1,j+1]:=strtofloat(StringGrid1.Cells[i,j]);
Пока что могу посоветовать посмотреть на значение A[i+1,j+1]. Возможно, вы пытаетесь преобразовать пустую строку в дробь.

ещё смущает то, что эта строка
Цитата:
A[i+1,j+1]:=strtofloat(StringGrid1.Cells[i,j]);
находится ВНЕ цикла.
могу ошибаться, правда

Последний раз редактировалось Вадим Мошев; 11.10.2014 в 23:40.
Вадим Мошев вне форума Ответить с цитированием
Старый 11.10.2014, 23:39   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от Вадим Мошев Посмотреть сообщение
Пока что могу посоветовать посмотреть на значение A[i+1,j+1]. Возможно, вы пытаетесь преобразовать пустую строку в дробь.
Дам более глобальный совет: научись раз и навсегда юзать дебаггер. Подобных вопросов задавать не будешь. Никогда!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 12.10.2014, 03:49   #4
challengerr
Участник клуба
 
Аватар для challengerr
 
Регистрация: 30.07.2008
Сообщений: 1,603
По умолчанию

Дебаггер например softice.
"SPACE.THE FINAL FRONTIER.This's a voyage of starship Enterprise. It's 5-year mission to explore strange new worlds,to seek out new life and civilizations,to boldly go where no man has gone before"
challengerr вне форума Ответить с цитированием
Старый 12.10.2014, 04:02   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Дебаггер, встроенный в delphi.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Метод гауса с выбором главного элемента по столбцу teemidov Паскаль, Turbo Pascal, PascalABC.NET 0 26.02.2012 14:01
метода Гауса Виктория Нисова Visual C++ 2 01.04.2011 15:02
Решение СЛАУ методом Гауса на Паскале Klik_1602 Помощь студентам 3 04.01.2011 22:00
обратная матрица методом гауса manuk Общие вопросы C/C++ 0 15.03.2010 18:28
решение задач методом Гауса (Delphi) rozalija Помощь студентам 1 18.09.2009 23:28