私はmath.hのsin関数であることを知っていますが、私は自分自身でその関数を楽しいものにしたいと考えています。私は正弦関数のMacluarin展開に基づいてsin関数を作成しました。 cでサイン関数を作成する方法
私は、電力機能や階乗関数を書き、彼らはint型メインから正常に動作しますが、彼らはここで、sin関数では動作しません。私のコードは
あるint main()
{
int i;
double y;
printf("\n\nPlease enter a value to find corresponding sin value\n");
scanf("%d",&i);
y=sin(i);
printf("\nYour value is\n %f",y);
return 0;
}
double sin(int z)
{
int i=1;
double value,val2,val3,sum=0;
for(i=1;i<33;i+=2)
{
val2=power(z,i);
val3=factorial(i);
value=val2/val3;
if(((i-1)/2)%2!=0){
sum=sum-value; //((power(x,i))/factorial(i));
}else
{
sum=sum+value;
}
}
printf("\n%f\n",sum);
return sum;
}
int factorial(int x)
{
int i,sum=1;
for(i=1;i<=x;i++)
{
sum = sum*i;
}
return sum;
}
int power(int x,int y)
{
unsigned long long int i,sum=1;
for(i=1;i<=y;i++)
{
sum=sum*x;
}
return sum;
}
どれ提案役立ちます。
オーバーフロー以外に、整数を使用すると、小数点以下が切り捨てられます。ああ、あなたはそれらを呼び出す前に関数を宣言していますか? 'main'関数の上に関数プロトタイプがありますか? –
条件if if(((i-1)/ 2)%2!= 0) 'の目的は何ですか? – Raman
@ARBYこれは、sum-x^3/3のような連続した '-'値のためです! – Kumar