![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Help!
Tans © (2006-04-21 07:05:00)Уважаемые мастера! Помогите начинающему! При запуске этой процедуры выдается ошибка:'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;
Галинка (2006-04-22 00:15:00) [1]А задание какое? x, y, h как-то определены? Иначе и должны быть нули.
Ega23 (2006-04-21 09:20:00) [2]Блин, нельзя такие ветки с утра читать. Особенно быстро. Создаётся впечатление, что ты вообще из реальности выпадаешь...
Elen (2006-04-21 09:12:00) [3]Tans еше раз пересмотри свою задачу и свою программу. У тебя там X Y всегда 0. Удачи!
balepa (2006-04-21 09:11:00) [4]Потому что x = 0
Tans (2006-04-21 09:09:00) [5]Мне непонятно, почему получаются нули!
balepa (2006-04-21 09:04:00) [6]
> Tans (21.04.06 09:00) [15]
А как ты на матиматике такое решал или у вас ее нет?
Tans (2006-04-21 09:00:00) [7]А как тогда?
balepa (2006-04-21 08:58:00) [8]
> 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 08:53:00) [9]А теперь нулями заполняет!
Elen (2006-04-21 08:50:00) [10]for i := 1 to StringGrid1.RowCount - 1 do Begin
Tans (2006-04-21 08:45:00) [11]Теперь не ругается, только SG не заполняет!
balepa (2006-04-21 08:41:00) [12]Tans сори не обращай внимание у меня глюки, и задавай вопросы в одной ветке а то я уже замучался туда сюда "прыгать"
Elen (2006-04-21 08:39:00) [13]У тебя там 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]);
Tans (2006-04-21 08:36:00) [14]а...которая строка? :)
balepa (2006-04-21 08:35:00) [15]Так и будет ругаться строку 'x' нельзя перевести в вещественное число
Tans (2006-04-21 08:31:00) [16]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)';
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 SXi0 then a0:=a0/(SXi*(1-n));
a1:=(SYi-a0*n);
if SXi0 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;
Elen (2006-04-21 08:29:00) [17]У меня не ругается. А где ты ее прописал?
Tans (2006-04-21 08:19:00) [18]Теперь ругается на эту строчку: Z1:=StrToFloat(StringGrid1.Cells[1,i]);
пишет:"is not valid floating point value"
Elen (2006-04-21 08:09:00) [19]У тебя изначально 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 07:59:00) [20]i: integer;
x, y,a0,a1,F,SXi,SYi,SXi_Yi,n,Z,SXi_Yi1,Z1,Z2: Double;
h,a:real;
Вот это они.