Решение квадратных уравнений

  • Автор темы DolWeb
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

DolWeb

Гость
#1
Компилятор выдаёт ошибку на отмеченой строке
Код:
Код:
#include <math.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double a,b,c;
a=Edit1->Text.ToDouble();
b=Edit2->Text.ToDouble();
c=Edit3->Text.ToDouble();
int d=b*b+4ac; // Пишет, что ошибка тут
if(d<0)
{
Panel1->Caption="Корней нет!";
return;
};
double x1=(-b+sqrt(d))/(2*a);
double x2=(-b-sqrt(d))/(2*a);
Panel1->Caption=String(x1)+";\r\n	"+String(x2);
}
Ошибка:
[BCC32 Error] Unit1.cpp(24): E2060 Illegal use of floating point
[BCC32 Error] Unit1.cpp(24): E2141 Declaration syntax error
[BCC32 Warning] Unit1.cpp(33): W8004 'c' is assigned a value that is never used
Тут разобрался:
Код:
int d=b*b+4*a*c;
Кароче объясните, почему функция, которая выше выдаёт не правильный результат, а эта выдаёт правильный:
Код:
#include <math.h>
void __fastcall TForm1::Button1Click(TObject *Sender)
{
double a,b,c;
a=Edit1->Text.ToDouble();
b=Edit2->Text.ToDouble();
c=Edit3->Text.ToDouble();
int k=b/2;
int d=k*k-a*c;
if(d<0)
{
Label6->Caption="Корней нет!";
return;
};
double x1=(-k+sqrt(d))/a;
double x2=(-k-sqrt(d))/a;
Label6->Caption=String(x1)+"\r\n"+String(x2);
}
 
04.09.2006
2 566
2
#2
Кароче объясните, почему функция, которая выше выдаёт не правильный результат, а эта выдаёт правильный:
Потому, что дискриминант определяется по формуле:
Код:
int d=b*b-4*a*c; // -
P.S. Читай пункт правил 2.6. Последнее предупреждение
 
D

DolWeb

Гость
#3
Спасибо
Оффтоп: я че теперь для каждого вопроса должен новую тему создавать?
 
04.09.2006
2 566
2
#4
Если вопросы по разным темам, то да. Будешь топикстартером дня :)
 
Статус
Закрыто для дальнейших ответов.