![]() |
|
|
|
|
#1
|
|||
|
|||
|
x1:=(-b-(sqrt(d)))/(2*a);
x2:=(-b+(sqrt(d)))/(2*a); -вот эти формулы выводят не реальные цифры подскажите в чём ошибка Код:
begin
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
c:=strtofloat(edit3.Text);
x1:=(-b-(sqrt(d)))/(2*a);
x2:=(-b+(sqrt(d)))/(2*a);
d:=(sqr(b))-(4*a*c);
x3:=-b/2*a;
if d>0 then
memo1.Lines.Add(floattostr(x1));
if d<0 then
memo1.Lines.Add('menshe 0');
if d>0 then
memo1.Lines.Add(floattostr(x2));
if d=0 then
memo1.Lines.Add(floattostr(x3));
end;Последний раз редактировалось Admin, 18.09.2008 в 10:18. |
|
#2
|
||||
|
||||
|
Надо соблюдать последовательность. У тебя сначала вычисляются корни уравнения, а потом уже дискриминант. Поменять
Код:
x1:=(-b-(sqrt(d)))/(2*a); x2:=(-b+(sqrt(d)))/(2*a); d:=(sqr(b))-(4*a*c); на Код:
d:=(sqr(b))-(4*a*c); x1:=(-b-(sqrt(d)))/(2*a); x2:=(-b+(sqrt(d)))/(2*a); И не забывать про проверки значения дискриминанта до вычисления корней! |
|
#3
|
|||
|
|||
|
Так она вообще не выходит
раньше хотя бы считала не правильно |
|
#4
|
||||
|
||||
|
Нужно пошагово пройтись и посмотреть значение переменных.
Если надо, то вот код: Код:
begin
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
c:=strtofloat(edit3.Text);
d:=(sqr(b))-(4*a*c);
if d<0 then
begin
memo1.Lines.Add('menshe 0');
exit;
end;
if d=0 then
begin
memo1.Lines.Add(floattostr(x3));
x3:=-b/2*a;
exit;
end;
x1:=(-b-(sqrt(d)))/(2*a);
x2:=(-b+(sqrt(d)))/(2*a);
memo1.Lines.Add(floattostr(x1));
memo1.Lines.Add(floattostr(x2));
end; |