マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第7章 関数の学習
第15話 等差数列の和

(
2 + 5 + 8 + 11 + 14 + 17 + 20 + 23 + 26 + 29 + 32 = 187
)
を実行するプログラム例
#include<iostream>//インクルードファイルiostreamの読み込み
#include<conio.h>//while(!_kbhit());を使うためのお呪い
#include<string> //文字列変数を使えるようにするために組み込む
#include <iomanip> //setprecisionを使えるように組み込む
#include <cmath>//powなどを使うときに必要
#include <ctime>//time()(←現時刻発生する関数)を使うために必要
using namespace std;//coutを使うときに必要なお呪い
int Sn(int a,int d,int n);//等差数列の和を求める関数
int main() {//私は社長だ。
int a, d, n;
a = 2;//初項
d = 3;//交差
n = 11;//項数
cout << "2 + 5 + 8 + 11 + 14 + 17 + 20 + 23 + 26 + 29 + 32
= ";
cout << Sn(a, d, n) << endl;
while (!_kbhit());//待機させるための命令
return 0;//int main() を終わるためのお呪い
}
int Sn(int a, int d, int n) {
int S = (n * (2 * a + (n - 1) * d)) / 2;
return(S);
}
2 + 5 + 8 + 11 + 14 + 17 + 20 + 23 + 26 + 29 + 32
は数えてみますと11項です。
ですから項数11です。
第16話では半径1の1/4円の面積を求めそれを4倍にすることによって、
πを求めるということをやってみたいと思います。
下図のように長方形に分割してその面積を足し合わせをするという方法を使います。
double f(double n);//円周率の計算
引数の n は10,100,1000,・・・としますが、
横幅を(1 / n)としますのでdouble型(倍精度実数型)にします。
計算の便法として
double d = 1 / n;
としておきましょう。式を簡略にするためにです。
半径は1と決まっていますから戻り値をdouble型にすることにしましょう。
使用するツールはもちろんfor文です。
円の面積の公式は
ですね。
したがって、r=1のとき、円の面積はちょうどπですから、
半径1の円の面積を計算すればよいのです。
1/4円

の面積を計算して、4倍すればよいのです。
では、1/4円の面積はどのように計算したらよいでしょうか。

小さい長方形に分けて足していけば、円の面積に近い値が出ます。
長方形の横幅を小さくしていけば、誤差は小さくなっていきます。
横幅をdとしまので1個目の長方形右端の値は
d×1=d
です。
では1個目の長方形の面積はどうでしょうか。
縦がわからないとわかりません。
円の方程式は、

です。xを移行して平方根をとれば、
でした。
ですから、1個目の長方形の縦は、
です。従って、その面積は![]()
2個目の右端はd × 2 = 2dとなりますから
2個目は縦が
で、面積は![]()
以下同様にして、
3個目は縦が
で、面積は![]()
n個目は縦が
で、面積は![]()
したがって、1/4円の面積は![]()
すなわち
を計算すればよいのです。
aの平方根はsqrt(a)で求められます。
#include<math.h>
によってmath.hをインクルードしておく必要があります。
実行結果

(
n = 10 3.30452
n = 100 3.16042
n = 1000 3.14356
n = 10000 3.14179
n = 100000 3.14161
n = 1000000 3.14159
)
第7章第14話へ 第7章第16話へ
本講義トップへ