回答編集履歴

1 x < 0 の場合も考慮するようにコード修正

shiron46

shiron46 score 103

2018/07/01 20:59  投稿

考え方は問題ありませんが、コーディングで3点ほどミスがあるようです。
**1. scanf の変換指定が正しくありません。**
floatを入力させるための変換指定子は%fです。
 
**2. 階乗の計算が加算になっています。**
「//deno_計算」の部分を再確認してみてください。
 
**3. 終了条件の判定に誤りがあります。**
nが奇数のときの項は負の数になるので、その時点で必ず終了してしまいます。
3に関しては、例えば下記のような修正はいかがでしょうか。
coeff_mole は正負を表しているだけなので終了判定時には無視し、足し合わせるときに考慮する方法です。  
```C言語
```C
//series_計算
series = vari / coeff_deno;
series = coeff_mole / coeff_deno * vari;
if (series >= pow(10, -8)) {
   sum = sum + coeff_mole * series;
if (fabs(series) >= pow(10, -8)) {
   sum = sum + series;
}
```
以上の3点を修正すれば、とりあえず目的通りに動くはずです。
こういうデバッグでは、自分が思った通りの処理ができているかをしっかり確認すると良いですよ。
(途中結果を出力してみる、IDEのデバッグモードを使うなど。)

思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る