Дано уравнение . На форме 3 Edita, Memo и 1 кнопка для выполнения.
В 1 Edite задается начальное значение x, во втором конечное, а в третьем вводится шаг вычислений. Ну это все просто, все выводится. А когда устанавливаю например шаг h=0, то
программа зацикливается. Там нужен обработчик 0, я его по всякому делал , но все не то. Может кто подскажет как.
Вот код программы (без обработчика):
procedure TForm1.Calc1Click(Sender: TObject);
var y,x,h,xn,xk,m:single;
s,s1:string;
begin
xn:=strtofloat(Edit1.Text);
xk:=strtofloat(Edit2.Text);
if xn>xk then
begin
m:=xn;
xn:=xk;
xk:=m;
end;
h:=strtofloat(Edit3.Text);
x:=xn;
while x<=xk do
begin
y:=(5*x*x*x*x)-(3*x*x*x)+(15*x*x)-4;
memo1.Lines.Add(' arg '+ floattostrf(x,fffixed,3,2)+ ' func ' +floattostrf(y,fffixed,3,2));
x:=x+h;
end;
уравнение
Модераторы: Duncon, Naeel Maqsudov, Игорь Акопян, Хыиуду
Ну а как она не зациклится, если написано:pikass писал(а): .........
А когда устанавливаю например шаг h=0, то
программа зацикливается.
..............
while x<=xk do
begin
y:=(5*x*x*x*x)-(3*x*x*x)+(15*x*x)-4]
x:=x+h;
end;
У тебя счетчик цикла (т.е. x) в случае (h = 0) никак не изменяется. Соответственно, условие цикла (x<=xk) ВСЕГДА остается истинным.
- Игорь Акопян
- Сообщения: 1440
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
1. при входе в процедуру проверить значение на 0, если да - выйти с ошибкой
2. вместо Edit использовать MaskEdit, курить доку про ValidateEdit (как-то так)
3. (я бы сделал) Кнопку привязать к Action, у которого и проверять ненулевое значение в едите
ЗЫ. Используйте тэг CODE для вставки исходника!
2. вместо Edit использовать MaskEdit, курить доку про ValidateEdit (как-то так)
3. (я бы сделал) Кнопку привязать к Action, у которого и проверять ненулевое значение в едите
ЗЫ. Используйте тэг CODE для вставки исходника!
