2010-01-31 4 views
4

Что включает в себя утверждение, нужно ли мне обращаться к математическим функциям в этом коде на C?C: Математические функции?

unsigned int fibonacci_closed(unsigned int n) { 
double term_number = (double) n; 
double golden_ratio = (1 + sqrt(5))/2; 
double numerator = pow(golden_ratio, term_number); 
return round(numerator/sqrt(5)); 
} 

Я попытался #include <math.h> но это, похоже, не делать этого.

Я использую Visual Studio 2010 (Windows 7). Это ошибка:

1>ClCompile: 
1> fibonacci_closed.c 
1>c:\users\odp\documents\visual studio 2010\projects\fibonacci\fibonacci\fibonacci_closed.c(7): warning C4013: 'round' undefined; assuming extern returning int 
1>fibonacci_closed.obj : error LNK2019: unresolved external symbol _round referenced in function _fibonacci_closed 
+2

sqrt, безусловно, в math.h. Вы пытались набирать «man xxxx» для функций, которые вам нужны? Какую систему/компилятор вы используете? Является ли проблема связыванием или компиляцией. – bmargulies

+0

Объясните, что «казалось бы, не делает этого» на самом деле означает, показывая ошибку компилятора. И скажите нам, на какой платформе вы находитесь. –

+0

Хорошо, вы все равно не сказали нам точной ошибки. – bmargulies

ответ

15

Round() не существует в math.h для библиотек Windows. Определение:

static inline double round(double val) 
{  
    return floor(val + 0.5); 
} 

UPDATE: в ответ на ваш комментарий, sqrt() определяется в math.h

+0

ok, что оставляет 'sqrt()' ... –

3

раунда был добавлен к С в стандартах C99, который не поддерживается вашим компилятором.

Смежные вопросы