• ベストアンサー

C言語で円周率を求めるプログラムを作りたいのですがわかりません。

C言語で円周率を求めるプログラムを作りたいのですがわかりません。 どなたか教えていただけないでしょうか。

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

  • ベストアンサー
  • tatsu99
  • ベストアンサー率52% (391/751)
回答No.2

C言語と円周率をキーワードにして検索をかけると、参考になるサイトが検索できますよ。 以下のURLを参照してください。具体的な、コーディングの例ものっています。 http://www1.cts.ne.jp/~clab/hsample/Math/Math1.html http://www.geocities.jp/kaname78web/pi.html http://www.ss.cs.meiji.ac.jp/CCP051.html

kittymimmy
質問者

お礼

ありがとうございます。 参考にさせていただきます。

その他の回答 (4)

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.5

念のために書いておきますが、ANo.3で挙げたプログラム例は真に受けないでください。 学校の課題とかだったら、多分怒られます。

kittymimmy
質問者

お礼

大丈夫です。 わざわざありがとうございました。

  • asuncion
  • ベストアンサー率33% (2126/6286)
回答No.4

>小数点以下6桁で表示されました。 >これはどうしてなのか教えていただけませんか? printf()の書式"%f"で、精度の記述を省略しているからです。 時間があれば、printf()の書式指定文字列について 調べてみてください。

kittymimmy
質問者

お礼

ありがとうございいます。 理解できました。

  • salsberry
  • ベストアンサー率69% (495/711)
回答No.3

小数点以下何桁まで求めたいのでしょうか? どんなアルゴリズムを使うにせよ、C言語のdouble型で表せる範囲に収まるかどうかで面倒くささが大きく異なります。 【円周率を求めるプログラム例】 #include <stdio.h> #include <math.h> int main() { double p=asin(1.0)*2.0; /* sin(π/2)=1 */ printf("%f\n", p); }

kittymimmy
質問者

お礼

ありがとうございます。 特に小数点以下何桁までとは決まっていないのですが、 salsberryさんのプログラムを実行してみたところ 小数点以下6桁で表示されました。 これはどうしてなのか教えていただけませんか? 初歩的な質問でごめんなさい。

  • larrymiz
  • ベストアンサー率26% (237/878)
回答No.1

円周率を求めるアルゴリズム自体が、問題ですから、C言語で、記述できる円周率を求めるプログラム自体が無数にあります。円周率πの話の本を、まず始めに勝ってください。モンテカルロ法など乱数を使って求めるものなど最初に乱数発生プログラムを作る問題から解くなどという方法もあります。円周率の歴史書があるぐらいで、一朝一夕で片付くようなプログラム制作ではありません。検索してもC言語での回答はないと思います。まずは、円周率を知ることです。

kittymimmy
質問者

お礼

返答ありがとうございました。 円周率についてもう少し調べてみることにします。

関連するQ&A

  • C言語で円周率

    大学でC言語で円周率を出すプログラムを作れと言われたのですが 一度作ってみたもののうまくできず さらに先生には 「もっと説明できるように作って来い」と言われてしまって困っています。 簡単なプログラミングで作りたいのですが どなたか教えていただけるとうれしいです!

  • C言語などで円周率を求める方法を教えてください

    C言語などで円周率を求める方法を教えてください C言語でなくても構いませんが1000桁くらい求めたいです よろしくお願いします

  • C言語で円周率を求めるプログラムを解読しています。

    C言語で円周率を求めるプログラムを解読しています。 ウィキ(http://ja.wikipedia.org/wiki/%E5%86%86%E5%91%A8%E7%8E%87)にも載っていましたが、 π/6=で始まる式を使って、 一項一項を順に求めていき、 最後にすべての項を足したものに6をかけて πを求めるという方法を使っています。 誤差が小さくなるまで繰り返すということで while(a>=1e-10) という表現をしているのですが、 ここのところが理解できません。 どなたか教えてくださいませんか? また、eとは自然対数の底などに用いられるあのeのことでしょうか? C言語初心者なのでお手柔らかに説明していただけると助かります。

  • C言語、円周率の値が0.000000?

    いつも大変お世話になりありがとうございます。 下記のコードを実行したところ、円周率の値が0.000000になりました。 どうしてでしょうか? アドバイスの程宜しくお願い申し上げます。 #include <stdio.h> int main(void) { double pi; printf("円周率の値はいくつですか?\n"); scanf("%1f", &pi); printf("円周率の値は%fです。\n", pi); return 0; } C:\MinGW>Sample9 円周率の値はいくつですか? 3.14 円周率の値は0.000000です。

  • 次のプログラムは、円周率だの近似値を求めるプログラムである。プログラム

    次のプログラムは、円周率だの近似値を求めるプログラムである。プログラム中の○に適するものを記入しなさい。 これを教えてください! C言語です #include<stdio.h> void main(void) { int sei,en; float pai,x,y,r; r=1.0; sei=0; en=0; for(x=0,1;○;x=x+0,1){ for(y=0.1;y<=1.0;○){ sei=sei+1; if((x*x+y*y)<=r*r)en=○; } } pai=(4.0*○)/(float)sei; printf("円周率=○¥n",pai); }

  • 円周率を求めるC言語のプログラム

    int a=10000,b,c=8400,d,e,f[8401],g;main(){for(;b-c;)f[b++]=a/5;for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a)for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b); というのが本(「π魅惑の数」)に載っていたので #include <stdio.h> int main(void){ int a=10000,b,c=8400,d,e,f[8401],g; for(;b-c;)f[b++]=a/5; for(;d=0,g=c*2;c-=14,printf("%.4d",e+d/a),e=d%a) for(b=c;d+=f[b]*a,f[b]=d%--g,d/=g--,--b;d*=b); return 0; } としたのですが 円周率を表示してくれません。 (b=0にすると一応は出てくるのですが微妙に間違ってます(よく分からないですけどそのくらいの誤差のあるプログラムなのでしょうか?))

  • 円周率について

    円周率について 円周率は永遠につづくといいますね でも 直径×円周率=円周なら 円周÷直径=円周率ですよね じゃあ直径が1ならどうするんですか? 円周÷1=も永遠につづくんですか? 1に割れない数なんてあるんですか? 教えてください。

  • c言語入門者です。

    c言語入門者です。 円周率暗記練習のプログラムを作成したいと思いましたが、早速つまずいています。 二冊の入門書は結構読み込んだつもりです。三日間考えたり検索してみたのですが、 どうしても糸口が見つからなかったので質問します。 円周率一万桁程度の数列に対して例えば3.1415926535や3.14などの先頭からの一部のみの数列で 真とする方法はどうすれば良いのでしょうか? また一万桁などの大きなデータはファイル入力によって処理するのでしょうか?

  • 円周率

    円周率が3だったら、六角形になりますが(これを円周率と言って良いのか、疑問がありますが)、 円周率が3.14だったら、何角形になるんですか?

  • 円周率の求め方

    「ボールウェインの4次の収束の公式」を利用して、 円周率を求めるプログラムを作ろうとしているのですが わからないところがあり、教えていただきたいのです。 1.ルート2ですが、例えば円周率100万桁求める場合、 何桁ぐらいにすればよいのでしょうか? 2.1/π=aとありますが、πを求めようとしたら 1/aと、やるしかないのでしょうか? よろしくお願いします。 「ボールウェインの4次の収束の公式」 http://hp.vector.co.jp/authors/VA014765/pi/others.html

専門家に質問してみよう