C: математические функции? - PullRequest
4 голосов
/ 31 января 2010

Какой оператор включения мне нужен для доступа к математическим функциям в этом коде 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 ]

15 голосов
/ 31 января 2010

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

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

ОБНОВЛЕНИЕ: в ответ на ваш комментарий sqrt () определено в math.h

3 голосов
/ 31 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...