練習 [6] 前半の復習(3/5)

練習 3(提出プログラム名:p0603a.c)

以下の例のように 1 つの整数 n を読み込み,円周率の近似値を出力できるプログラムを p0603a.c として作りなさい.なお,近似値は小数点以下第 3 位までを出力することとする.
また,この問題では int 型の変数しか使ってはいけません(double 型へのキャストは使用可)
この問題では n は 1 以上 20000 以下の整数であると仮定してプログラムを作ってよい.

【この問題での円周率の求め方】
いま,x-y 座標平面上で x,y 座標とも整数となる格子点を考える.
そして,最初に n を入力するが,ここでは格子点として次の n2 個を考える:
 (0,0), (0,1), (0,2), …, (0, n-1),
 (1,0), (1,1), (1,2), …, (1, n-1),
  ………
 (n-1,0), (n-1,1), (n-1,2), …, (n-1, n-1)

次に下図のように第 1 象限上で半径 n の円を考え,この円と x, y 軸で囲まれる扇形の内部に入る格子点の個数を数える.(その格子点の位置座標を (a,b) とした場合,a2 + b2 < n2 ならば内側に入っている
      

そのような格子点の個数を cnt とおくと,cnt/n2 は n が大きいほど π/4 へ近付く.
それゆえ,それを 4 倍した値は円周率 π へ近付く.

  • 【プログラムの実行例】(その1)赤字は実行時にキーボードから入力する内容
    ※ 出力の末尾の改行(n)を忘れないこと.
    以下の 3 つの実行例はいずれも Windows 環境での出力であるため,Mac 環境では少し値が異なる可能性があります.
n を入力してください:100
PI = 3.180
  • 【プログラムの実行例】(その2)赤字は実行時にキーボードから入力する内容
n を入力してください:1000
PI = 3.146
  • 【プログラムの実行例】(その3)赤字は実行時にキーボードから入力する内容
n を入力してください:20000
PI = 3.142

【過去にあったミス(減点となり,やり直しを命じられる)】
3種類の実行例を確認せずに提出してしまっている.
インデントに不備がある(VSCode 上でインデントを自動で揃える作業をやっていない).


ミスが無いことを確認したら次の問題へ → [ 練習4 (p0604a.c) ]