Вы не объявили deg_to_rad()
:
extern double deg_to_rad(int deg);
прежде чем использовать его. Ваш код предполагает, что он возвращает int
и преобразует его в double
.
У вас должен быть заголовок degtorad.h
.
degtorad.h
#ifndef DEGTORAD_H_INCLUDED
#define DEGTORAD_H_INCLUDED
extern double deg_to_rad(int deg);
#endif /* DEGTORAD_H_INCLUDED */
(В этом примере защита заголовка не является обязательной на 100%, но это хорошая основа для более сложных случаев, когда защита заголовка необходима.)
Тогда ваши программные файлы включают этот заголовок. Где-то вдоль линии вам также нужно объявить evaluate_sin()
; он может войти в тот же заголовок.
оценка_sin.c:
#include <math.h>
#include <stdio.h>
#include "degtorad.h"
double evaluate_sin(int deg)
{
double j = deg_to_rad(deg);
j = sin(j);
printf("sin(%d) = %.6f\n", deg, j);
return j;
}
Обратите также внимание на изменение типа возвращаемого значения (double
вместо int
); он вернет 0, если вам не удастся передать точное нечетное число, кратное π/2 (когда он вернет -1 или +1). А также изменение формата значения double
(%.6f
вместо %d
, которое выводило бы целое число).
Если вы используете GCC, вам нужно включить предупреждения компиляции; не менее -Wall
.
deg_to_rad.c
#include "deg_to_rad.h"
double deg_to_rad(int deg)
{
double rad = (3.14 * deg) / 180;
return rad;
}
person
Jonathan Leffler
schedule
06.03.2013
double
иint
(%d
) не имеют одинакового битового формата для этой печати. Попробуйте%f
- person WhozCraig   schedule 06.03.2013%f
вместо этого? - person alex   schedule 06.03.2013%lf
?? @WhozCraig :-P - person Aniket Inge   schedule 06.03.2013%d
=P. Судя по диаграмме, я не думаю, что это имеет значение, но, вероятно, лучшая форма, как у вас есть. - person WhozCraig   schedule 06.03.2013