マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第3章 for文(繰り返し処理)

第9話 等比数列を加える
ー*-*-*-*-*-*-*-*-*-*-*-*-*
第8話への課題の課題です。
int 等比数列の和()という関数を作って

(さぁ、探検・冒険の始まりだ!

1 + 2 + ・・・ + 10000 = 50005000

1 × 2 × ・・・ × 15 = 2004310016

2 + 5 + ・・・ + 32 = 187

2 + 6 + 18 + 54 + 162 + 486 + 1458 + 4374 = 6560


和 = 和 + 2 * pow(3,i);という式が出てきます。

pow(3,i)は3のi乗といういみです。

ですから

pow(3,0)=1

pow(3,1)=3

pow(3,2)=9

pow(3,3)=27

と動いていきます。

pow(3,i)を使うためには

#include <cmath>//powを使うために必要!pow(2,8)は2の8乗を計算してくれるもの

が必要となります。

等差数列の和より難問ですが、

皆さん、頑張ってください。

ー*-*-*-*-*-*-*-*-*-*-*-*-*


となるコード例

#include<iostream>//インクルードファイルiostreamの読み込み

#include<conio.h>//while(!_kbhit());を使うためのお呪い

#include<string> //文字列変数を使えるようにするために組み込む

#include <iomanip> //setprecisionを使えるように組み込む

#include <cmath>//powなどを使うときに必要

using namespace std;//coutを使うときに必要なお呪い

int 足し算();//1 + 2 + ・・・ + 100 などを計算する関数

int 掛け算();//1 × 2 × ・・・ × 15 などを計算する関数

int 等差数列の和();//2 + 5 + ・・・ + 32 などを計算する関数

int 等比数列の和();// 2 + 6 + 18 + 54 + 162 + 486 + 1458 + 4374 を計算する

int main() {//私は社長だ。

  cout << "さぁ、探検・冒険の始まりだ!" << endl << endl;

  cout << " 1 × 2 × ・・・ × 15 = " << 掛け算() << endl << endl;

  cout << " 1 + 2 + ・・・ + 10000 = " << 足し算() << endl << endl;

  cout << " 2 + 5 + ・・・ + 32 = " << 等差数列の和() << endl << endl;

  
cout << " 2 + 6 + 18 + 54 + 162 + 486 + 1458 + 4374 = " << 等比数列の和() << endl << endl;

  while (!_kbhit());//待機させるための命令

  return(0);//int main()終わるためのお呪い

}

int 足し算() {
  //1 + 2 + ・・・ + 10000 などを計算する関数

  int 和 = 0;//gを整数型と定義して0に初期化

  for(int i = 0 ; i < 10001; i = i + 1){

    和 = 和 + i;

  }

   return(和);//何かを返さないとエラーしますのでとりあえず0を返していますが、後に変更されます。
}

int 掛け算() {
  //1 × 2 × ・・・ × 15 などを計算する関数

  int 積 = 1;//掛け算は1から始める

  for (int i = 2; i < 16; i++) {

    積 *= i;

  }

  return(積);

}

int 等差数列の和() {
  //2 + 5 + ・・・ + 32 などを計算する関数

  int 和 = 0;//和を整数型変数として定義して0に初期化

  for (int i = 0; i < 11; i += 1) {

    和 = 和 + (2 + 3 * i);

  }

  return(和);

}

int 等比数列の和() {
  // 2 + 6 + 18 + 54 + 162 + 486 + 1458 + 4374 を計算する関数

  int 和 = 0;//和を整数型変数として定義して0に初期化

  for (int i = 0; i < 8; i += 1) {

    和 = 和 + 2 * pow(3, i);

  }

  return(和);

}


第3章第8話へ 第3章第10話へ

本講義トップへ