|
#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); И не забывать про проверки значения дискриминанта до вычисления корней! Хорошо написанная программа не требует документации ICQ 9-184-668. |
#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; Хорошо написанная программа не требует документации ICQ 9-184-668. |