Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.05.14;
Скачать: CL | DM;

Вниз

Help!   Найти похожие ветки 

 
Tans   (2006-04-21 07:05) [0]

Уважаемые мастера! Помогите начинающему! При запуске этой процедуры выдается ошибка:"Invalid floating point operator" . Помогите, пжалста, исправить!
procedure TForm1.FormCreate(Sender: TObject);
begin
SXi:=0;
SYi:=0;
SXi_Yi:=0;
n:=10;
with StringGrid1 do
   begin
     Cells[0, 0] := "¹";
     Cells[1, 0] := "x";
     Cells[2, 0] := "y";
      Cells[3, 0] := "F(x)";

     x:=a+x*h;
     y:=(x);
     a0:=(SXi_Yi- (SXi*SYi))/(SXi*(1-n));
     a1:=(SYi-a0*n)/ SXi;
     F := a0+a1*x;
     h:=0.1;

StringGrid1.Cells[1,i]:= FloatToStr(x);
StringGrid1.Cells[2,i]:= FloatToStr(y);
StringGrid1.Cells[3,i]:= FloatToStr(F);
SXi:=SXi+ StrToFloat(StringGrid1.Cells[1,i]);
SYi:=SYi+ StrToFloat(StringGrid1.Cells[2,i]);
SXi_Yi:= SXi_Yi+(x*y);
SXi_Yi1:=x*y;

   end;
end;


 
Elen ©   (2006-04-21 07:54) [1]

Как у тебя описаны переменные? Какого они типа?


 
Tans   (2006-04-21 07:59) [2]

i: integer;
   x, y,a0,a1,F,SXi,SYi,SXi_Yi,n,Z,SXi_Yi1,Z1,Z2: Double;
   h,a:real;
Вот это они.


 
Elen ©   (2006-04-21 08:09) [3]

У тебя изначально Sxi равняется 0, а на ноль делить нельзя
замени   a0:=(SXi_Yi- (SXi*SYi))/(SXi*(1-n));
  a1:=(SYi-a0*n)/ SXi;

на
a0:=(SXi_Yi- (SXi*SYi));
  if sxi<>0 then  a0:=a0/(SXi*(1-n));
  a1:=(SYi-a0*n);
  if sxi<>0 then a1:=a1/ SXi;


НА будущее : Тестируй программу пошагово, расставь точки прерывания и проверяй значения переменных, наводя на них курсор мыши.


 
Tans   (2006-04-21 08:19) [4]

Теперь ругается на эту строчку: Z1:=StrToFloat(StringGrid1.Cells[1,i]);
пишет:"is not valid floating point value"


 
Elen ©   (2006-04-21 08:29) [5]

У меня не ругается. А где ты ее прописал?


 
Tans   (2006-04-21 08:31) [6]

procedure TForm1.FormCreate(Sender: TObject);
begin
SXi:=0;
SYi:=0;
SXi_Yi:=0;
n:=10;
with StringGrid1 do
begin
     Cells[0, 0] := "&#185;";
     Cells[1, 0] := "x";
     Cells[2, 0] := "y";
     Cells[3, 0] := "F(x)";
begin
for i := 1 to StringGrid1.RowCount - 1 do
Z1:=StrToFloat(StringGrid1.Cells[1,i]);
Z2:=StrToFloat(StringGrid1.Cells[2,i]);
Z:=Z1*Z2;
Cells[0, i] := IntToStr(i);

     x:=x+x*h;
     y:=(x);
    a0:=(SXi_Yi- (SXi*SYi));
   if SXi<>0 then  a0:=a0/(SXi*(1-n));
   a1:=(SYi-a0*n);
   if SXi<>0 then a1:=a1/ SXi;
     F := a0+a1*x;
     h:=0.1;
     Z:=x*y;
StringGrid1.Cells[1,i]:= FloatToStr(x);
StringGrid1.Cells[2,i]:= FloatToStr(y);
StringGrid1.Cells[3,i]:= FloatToStr(F);
SXi:=SXi+ StrToFloat(StringGrid1.Cells[1,i]);
SYi:=SYi+ StrToFloat(StringGrid1.Cells[2,i]);
SXi_Yi:= SXi_Yi+(Z1*Z2);
SXi_Yi1:=Z;

end;
end;
end;


 
balepa ©   (2006-04-21 08:35) [7]

Так и будет ругаться строку "x" нельзя перевести в вещественное число


 
Tans   (2006-04-21 08:36) [8]

а...которая строка? :)


 
Elen ©   (2006-04-21 08:39) [9]

У тебя там StringGrid1.Cells[1,i]="", а пусто в число не переводится
замени свой for на этот

for i := 1 to StringGrid1.RowCount - 1 do
if StringGrid1.Cells[1,i]<>"" then Z1:=StrToFloat(StringGrid1.Cells[1,i]);


 
balepa ©   (2006-04-21 08:41) [10]

Tans сори не обращай внимание у меня глюки, и задавай вопросы в одной ветке а то я уже замучался туда сюда "прыгать"


 
Tans   (2006-04-21 08:45) [11]

Теперь не ругается, только SG не заполняет!


 
Elen ©   (2006-04-21 08:50) [12]

for i := 1 to StringGrid1.RowCount - 1 do Begin


 
Tans   (2006-04-21 08:53) [13]

А теперь нулями заполняет!


 
balepa ©   (2006-04-21 08:58) [14]


> Tans   (21.04.06 08:53) [13]


А чего ты ожидал с таким кодом ?
x:=x+x*h;
y:=(x);
a0:=(SXi_Yi- (SXi*SYi));
Z:=x*y;

X = 0
y=0
Sxi =0
Syi=0
Z = 0


 
Tans   (2006-04-21 09:00) [15]

А как тогда?


 
balepa ©   (2006-04-21 09:04) [16]


> Tans   (21.04.06 09:00) [15]


А как ты на матиматике такое решал или у вас ее нет?


 
Tans   (2006-04-21 09:09) [17]

Мне непонятно, почему получаются нули!


 
balepa ©   (2006-04-21 09:11) [18]

Потому что x = 0


 
Elen ©   (2006-04-21 09:12) [19]

Tans еше раз пересмотри свою задачу и свою программу. У тебя там X Y всегда 0. Удачи!


 
Ega23 ©   (2006-04-21 09:20) [20]

Блин, нельзя такие ветки с утра читать. Особенно быстро. Создаётся впечатление, что ты вообще из реальности выпадаешь...


 
Галинка ©   (2006-04-22 00:15) [21]

А задание какое? x, y, h как-то определены? Иначе и должны быть нули.



Страницы: 1 вся ветка

Текущий архив: 2006.05.14;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.037 c
1-1144096594
Antip
2006-04-04 00:36
2006.05.14
Как грамотно и быстро узнать на каком монике форма?


2-1146066746
chai
2006-04-26 19:52
2006.05.14
Аналог IntToStr в Win API


2-1145626164
suharew
2006-04-21 17:29
2006.05.14
Запись в Com порт в шестнадцатеричном формате


15-1145429535
makar
2006-04-19 10:52
2006.05.14
Книги по Delphi 7


2-1146052225
KyRo
2006-04-26 15:50
2006.05.14
Что не так с сервисом ?