第3講 for文の学習
第7話 円周率πを求めるプログラム
円周率πを求めるプログラムコード例
#include<iostream>
#include<math.h>
#include <iomanip>
using namespace std;
void main(){
   double w=0,d;                     
   long n;
   cout<<"刻み数は?"<<endl;                        
   scanf("%d",&n);                     
   d=1/(double)n;                     
   for(long i=0;i<n;i++)w=w+d*sqrt(1-((double)i*d)*((double)i*d));
   cout<<"円周率="<< setprecision(20) <<4*w<<endl;      
}
p

実行例
q

実験結果を表にしてみましょう。

正しい円周率  3.1415926535897932
n=100 3.1604170317790472 
n=1000  3.1435554669110282 
n=10000  3.1417914776113167 
n=100000  3.1415946524138207 
n=1000000 3.1415928535523587
n=10000000 3.1415926735892157 

刻み数の増大に従って、円周率に近づいていく様子が分かります。

円周率を求めるのに今回は半径1の円の面積を使いましたが、
ライプニッツの公式を使う方法もあります。
ライプニッツの公式とは、
π/4=1−1/3+1/5−1/7+1/9−・・・
です。
何番目(nとします。)まで計算するのかをコンソールから取得して、
for文でπを計算するプログラムを組んでみて下さい。
今回も計算させる回数nが大きくなるほど、
近似の精度が高くなりますので、
実験してみましょう。

交互に+と−を現れるようにすることは、
初心者にはかなり難しい課題といえますので、
ヒントとして1と-1を交互に表示させるプログラムを書いておきましょう。
b
#include<iostream>
using namespace std;
void main(){
   int h=-1;
   for(char i=0;i<10;i++){
      h=(-1)*h;
      cout<<h<<endl;
   }
}
実行結果
d

解説
#include<iostream>
using namespace std;
void main(){
   int h=1;
   for(char i=0;i<10;i++){
      h=(-1)*h;
      cout<<h<<endl;
   }
}
とすると、
y
と-1から始まります。
#include<iostream>
using namespace std;
void main(){
   int h=-1;
   for(char i=0;i<10;i++){
      h=(-1)*h;
      cout<<h<<endl;
   }
}
実行結果
dに戻りましょう。
−1に−1をかければ1です。
そして、1に−1をかければ−1です。
−1をかけ続ければ+1と−1を交互に実現できるのです。

第6話へ 第8話へ

a

魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ