Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.09.2008, 05:50   #1
Yermek
 
Регистрация: 22.08.2008
Сообщений: 5
По умолчанию Diskriminant

Здраствуйте дикриминант не высчитывает
x1:=(-b-(sqrt(d)))/(2*a);
x2:=(-b+(sqrt(d)))/(2*a); - вот эти формулы выводят не правильные цифры
Подскажите в чём ошибка?
procedure TForm1.Button1Click(Sender: TObject);
var
a:real;
b:real;
c:real;
d:real;
x1:real;
x2:real;
x3:real;

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)+floa ttostr(x2));
if d<0 then
memo1.Lines.Add('menshe 0');
if d=0 then
memo1.Lines.Add(floattostr(x3));
end;
Yermek вне форума Ответить с цитированием
Старый 18.09.2008, 06:08   #2
Pedro
Форумчанин
 
Аватар для Pedro
 
Регистрация: 25.03.2007
Сообщений: 166
По умолчанию

Может потому что вычисление дискриминанта нужно сделать перед вычислением корней.
Pedro вне форума Ответить с цитированием
Старый 18.09.2008, 06:11   #3
Yermek
 
Регистрация: 22.08.2008
Сообщений: 5
По умолчанию

Так я уже пробавал не выходит вообще
а так какие цыфры выходят но неправильные
Yermek вне форума Ответить с цитированием
Старый 18.09.2008, 07:56   #4
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Писать надо так, чтобы компьютер на каждом шаге знал, что ему делать, а если Вы пишите все не по порядку, не указывая что делать, то и ответы такие будут. Напишите так:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
a:real;
b:real;
c:real;
d:real;
x1:real;
x2:real;
x3:real;
begin
a:=strtofloat(edit1.Text);
b:=strtofloat(edit2.Text);
c:=strtofloat(edit3.Text);
d:=(sqr(b))-(4*a*c);
if d>0 then
begin
x1:=(-b-sqrt(d))/(2*a);
x2:=(-b+sqrt(d))/(2*a);
memo1.Lines.Add('x1='+floattostr(x1)+'  x2='+floattostr(x2));
end
else if  d<0 then memo1.Lines.Add('menshe 0')
else  if d=0 then
begin
x3:=-b/2*a;
memo1.Lines.Add('x1=x2='+floattostr(x3));
end;
end;
puporev вне форума Ответить с цитированием
Старый 18.09.2008, 08:25   #5
Alter
Старожил
 
Аватар для Alter
 
Регистрация: 06.08.2007
Сообщений: 2,183
По умолчанию

и ещё один случай, если "a"=0
Alter вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск