第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;
}
実行例
実験結果を表にしてみましょう。
正しい円周率 | 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を交互に表示させるプログラムを書いておきましょう。
#include<iostream>
using namespace std;
void main(){
int h=-1;
for(char i=0;i<10;i++){
h=(-1)*h;
cout<<h<<endl;
}
}
実行結果
解説
#include<iostream>
using namespace std;
void main(){
int h=1;
for(char i=0;i<10;i++){
h=(-1)*h;
cout<<h<<endl;
}
}
とすると、
と-1から始まります。
#include<iostream>
using namespace std;
void main(){
int h=-1;
for(char i=0;i<10;i++){
h=(-1)*h;
cout<<h<<endl;
}
}
実行結果
に戻りましょう。
−1に−1をかければ1です。
そして、1に−1をかければ−1です。
−1をかけ続ければ+1と−1を交互に実現できるのです。
第6話へ 第8話へ
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
VC++ C言語 C++ 入門 初心者 基礎から応用まで
本サイトトップへ