前提・実現したいこと
C言語で以下のようなプログラムを作っています。
・階乗を計算する関数:Factorial()を作成。
・関数:mysin()を作成。
・それをもとに、<math.h>で定義されているsin関数と結果を比較。
mysin()関数は以下の式をもとに,n=7 まで計算しています。
Σ(-1)^(n+1) * x^(2n-1) / (2n-1)!
発生している問題・エラーメッセージ
以下のコードを実行したときに、メイン関数内のscanfで止まってしまい、それ以降何も起きない現象になっています。どこが原因でそうなっているのかを判明させ、前述のタスクを実行できるプログラムにしたいです。
該当のソースコード
C
1#include <stdio.h> 2#include <math.h> 3 4#define N 7 5 6//階乗を求める関数 7int Factorial(int n){ 8 9 int k; 10 int result = 1;//階乗した値 11 12 for(k=1;k<=n;k++) { 13 result *= k; 14 } 15 16 return result; 17} 18 19//近似値を求める関数 20double mysin(double x){ 21 22 int i=1; 23 double ans; 24 25 for(i=1;i<=N;i++){ 26 ans += (double)(pow(-1,i+1)) * pow(x,2*i-1) / Factorial(2*i-1); 27 } 28 29 return ans; 30} 31 32int main(void){ 33 34 double x; 35 double c_answer; //Correct answer 36 double a_answer; //Approximate answer 37 38 printf("Input x: "); 39 scanf("%lf\n", &x); 40 41 c_answer = sin(x); 42 printf("sin(x) = %.6f\n", c_answer); 43 44 a_answer = mysin(x); 45 printf("my_sin(x) = %.6f\n", a_answer); 46 47 return 0; 48 49 } 50
試したこと
for文が無限ループになってしまっているのかを何度も確認しましたが、詳しい原因がわからずに質問いたしました。
補足情報(FW/ツールのバージョンなど)
Macにて、エディタはatom、terminalにてコンパイルしています。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/10/07 04:52 編集
2020/10/07 06:02