Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 18.09.2008, 05:41
Yermek Yermek вне форума
Прохожий
 
Регистрация: 18.09.2008
Сообщения: 2
Репутация: 10
По умолчанию Дискриминант

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  
Старый 18.09.2008, 10:29
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Надо соблюдать последовательность. У тебя сначала вычисляются корни уравнения, а потом уже дискриминант. Поменять

Код:
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  
Старый 18.09.2008, 19:41
Yermek Yermek вне форума
Прохожий
 
Регистрация: 18.09.2008
Сообщения: 2
Репутация: 10
По умолчанию

Так она вообще не выходит
раньше хотя бы считала не правильно
Ответить с цитированием
  #4  
Старый 19.09.2008, 12:15
Аватар для Thrasher
Thrasher Thrasher вне форума
Illuminati
 
Регистрация: 06.03.2008
Адрес: Крым, г. Симферополь
Сообщения: 348
Репутация: 8808
По умолчанию

Нужно пошагово пройтись и посмотреть значение переменных.

Если надо, то вот код:

Код:
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.
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:21.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter