練習 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 上でインデントを自動で揃える作業をやっていない).
← [ 練習2 (p0602a.c) ]
ミスが無いことを確認したら次の問題へ → [ 練習4 (p0604a.c) ]