Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Sqrt


Автор: <Spawn> 31.10.2003, 13:41
Недавно начал изучать Си. Сижу в VC. Компилятор не как не хочет понимать sqrt, вроде когда набираю эту функцию, то предлагается список параметров, но при попытке компиляции вопит, что indeclared identifier.

Автор: Baa 31.10.2003, 13:45
Надо подключить math.h

Автор: <Spawn> 31.10.2003, 13:47
Baa Спасибо, так и есть.

Автор: val 31.10.2003, 15:21
Еще есть ньюанс... Если берёшь корень из вещественного числа надо использовать sqrtf(... , для целых типов - sqrt(... Сам на этом сильно накололся... smile.gif

Автор: <Spawn> 31.10.2003, 15:43
val Спасибо, но я что то ни как не могу получить нужных мне значений в вычислении. Видимо в Си еще какой то нюанс, который я пока не знаю. Вот как я делаю (рисую Эллипс):

Код
void CEllipseView::OnDraw(CDC* pDC)
{
int a, b, c, x, y;
a = 100;
c = 60;
b = sqrtf( (a * a) - (c * c) );

for (x = -a; x <= a; x++){
 y = sqrtf((b * b) * (1 - (x * x)  /  (a * a)));
 TRACE("y = %d\n", y);
 pDC->SetPixel(x, y, RGB(0, 0, 0));
 pDC->SetPixel(x, -y, RGB(0, 0, 0));
}
               ........

}


Y сначала имеет значение 0(т.к. получается (1-1) * (b * b)), после чего у него все значения одинаковы, т.е. получается почему то всегда (b * b) * (1 - 0). Из за чего это?

Автор: DENNN 31.10.2003, 15:55
Из-за потери точности. перменные объявлены у тебя как целые, поэтому все цифры после запятой теряються.

Автор: <Spawn> 31.10.2003, 16:02
DENNN Сенк, все заработало smile.gif

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)