マルチスレッド版数独自動生成ソフト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円
1/4円
の面積を計算して、4倍すればよいのです。

では、1/4円の面積はどのように計算したらよいでしょうか。
積分
小さい長方形に分けて足していけば、円の面積に近い値が出ます。

長方形の横幅を小さくしていけば、誤差は小さくなっていきます。

横幅をdとしまので1個目の長方形右端の値は

d×1=d

です。

では1個目の長方形の面積はどうでしょうか。

縦がわからないとわかりません。

円の方程式は、




です。xを移行して平方根をとれば、

円の方程式でした。

ですから、1個目の長方形の縦は、積分第1です。従って、その面積は長方形面積

2個目の右端はd × 2 = 2dとなりますから

2個目は縦が積分第2で、面積は2番目長方形面積

以下同様にして、

3個目は縦が積分第3で、面積は3番目長方形面積

n個目は縦が積分第nで、面積は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話へ

本講義トップへ