あなたは宣言していません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()
ます。同じヘッダーに入る可能性があります。
Evaluation_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
。π/2の正確な奇数倍を渡すことができない限り、0を返します(-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;
}