• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語の演算式)

C言語の演算式とは?

このQ&Aのポイント
  • C言語のプログラミングで、4×(1-1/3+1/5-1/7+・・・・・)の式を100000項まで合計した式を作る方法を教えてください。
  • 自分で作成したプログラムでは答えが0になってしまいます。正しい答えを求めるためにはどうすればよいでしょうか?
  • C言語の演算式を計算する際には、ループを用いて項を足し合わせる必要があります。適切なループ処理を行うことで正しい答えを得ることができます。

質問者が選んだベストアンサー

  • ベストアンサー
  • hitomura
  • ベストアンサー率48% (325/664)
回答No.1

C 言語では int 型同士の四則演算は結果も int 型になります。 特に、除算では小数点以下を切り捨てた値を返します。 つか、除算結果を集計する a もその結果を 4 倍する b も int 型じゃないですか。これでは小数点以下が無視されます。 というわけで、a と b を double 型にして、除算の分母側を double にキャストしてください。

pikushikyo
質問者

お礼

みなさま回答ありがとうございました。 初心者なもので皆様の回答大変ためになります。 アドバイスをもとに明日もう一度やってみます。 とくに答えが0になるのがお手上げだったので、その原因を書いてくださったno.1の方をベストアンサーとさせて頂きます。 ありがとうございました。

その他の回答 (4)

  • asuncion
  • ベストアンサー率33% (2127/6290)
回答No.5

#include <stdio.h> int main(void) { double s; int i; for (s = i = 0; i < 100000; i++) { double a = 1.0 / (2 * i + 1); s += (i % 2 == 0) ? a : -a; } printf("%f\n", 4 * s); return 0; } 100000項では、誤差が多少出るようです。

pikushikyo
質問者

お礼

みなさま回答ありがとうございました。 初心者なもので皆様の回答大変ためになります。 アドバイスをもとに明日もう一度やってみます。 とくに答えが0になるのがお手上げだったので、その原因を書いてくださったno.1の方をベストアンサーとさせて頂きます。 ありがとうございました。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.4

あえてさらに突っ込むなら なんで do~while かな. ちなみに「普通レベル」がどの分野の「普通」かにもよりますね>#3. 数値計算なら「普通」どころか「最初」といってもいいレベルだし.

pikushikyo
質問者

お礼

みなさま回答ありがとうございました。 初心者なもので皆様の回答大変ためになります。 アドバイスをもとに明日もう一度やってみます。 とくに答えが0になるのがお手上げだったので、その原因を書いてくださったno.1の方をベストアンサーとさせて頂きます。 ありがとうございました。

  • foomufoomu
  • ベストアンサー率36% (1018/2761)
回答No.3

他にもいろいろ突っ込みどころのあるプログラムなんですが、たぶん誰も書かないし普通レベルの本にも載ってないつっこみを。。。 このように、たくさんの数を足し算引き算するときは、大きな数→小さな数 の順に計算すると誤差が大きくなります。 小さな数→大きな数、すなわち 1/999999 項 から始めて、1 項 で終わるようにループを作りましょう。 よって for(i=99999; i>0; i-=2) でループすればよいです。

pikushikyo
質問者

お礼

みなさま回答ありがとうございました。 初心者なもので皆様の回答大変ためになります。 アドバイスをもとに明日もう一度やってみます。 とくに答えが0になるのがお手上げだったので、その原因を書いてくださったno.1の方をベストアンサーとさせて頂きます。 ありがとうございました。

回答No.2

int a,b;doubleにすればいいけども、 変でない?!なぜ開始a=1で、出力b-1?

pikushikyo
質問者

お礼

みなさま回答ありがとうございました。 初心者なもので皆様の回答大変ためになります。 アドバイスをもとに明日もう一度やってみます。 とくに答えが0になるのがお手上げだったので、その原因を書いてくださったno.1の方をベストアンサーとさせて頂きます。 ありがとうございました。

関連するQ&A