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

第8話 第7話等差数列の部分を解説する

int 等差数列の和() という関数を作って実行画面が

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

1 + 2 + ・・・ + 10000 = 50005000

1 × 2 × ・・・ × 15 = 2004310016

2 + 5 + ・・・ + 32 = 187

)

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

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

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

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

  }

  return(和);

}


最後につきましては解説が必要になります。

コンピュータの動きを追うことをトレースすると言いますが、

トレースをしながら解説していきます。

i = 0 のとき  和 = 和 + (2 + 3 * i)の動きを追います。     
  和 = 和 + (2 + 3 * i)    
  は同じ和でも左辺にあるときと右辺にあるときでは意味が異なります。     
  和は左辺にあるので箱そのものを意味します。    
  対して和は右辺にあるので、箱に入っている値になります。     
  int 和 = 0;から値は0かつ i = 0ですから    
  和 = 0 + (2 + 3 * 0)から和 = 2 となり、下の行では右辺になりますから和 = 2となります。     
      あ 
i = 1のとき 和 = 和 + (2 + 3 * i)    
和 = 2 + (2 + 3 * 1) = 7となり、下の行では右辺になりますから和 = 7となります。    
       あ
i = 2 のとき 和 = 和 + (2 + 3 * i)    
和 = 7 + (2 + 3 * 2) = 15となり、下の行では右辺になりますから和 = 15となります。    
       あ
i = 3 のとき 和 = 和 + (2 + 3 * i)    
和 = 15 + (2 + 3 * 3) = 26となり、下の行では右辺になりますから和 = 26となります。    
       あ
i = 4 のとき 和 = 和 + (2 + 3 * i)    
和 = 26 + (2 + 3 * 4) = 40となり、下の行では右辺になりますから和 = 40となります。    
       あ
i = 5 のとき 和 = 和 + (2 + 3 * i)    
和 = 40 + (2 + 3 * 5) = 57となり、下の行では右辺になりますから和 = 57となります。    
       あ
i = 6 のとき 和 = 和 + (2 + 3 * i)    
和 = 57 + (2 + 3 * 6) = 77となり、下の行では右辺になりますから和 = 77となります。    
       あ
i = 7 のとき 和 = 和 + (2 + 3 * i)    
和 = 77 + (2 + 3 * 7) = 100となり、下の行では右辺になりますから和 = 100となります。    
       あ
i = 8 のとき 和 = 和 + (2 + 3 * i)    
和 = 100 + (2 + 3 * 8) = 126となり、下の行では右辺になりますから和 = 126となります。
   
       あ
i = 9 のとき 和 = 和 + (2 + 3 * i)    
和 = 126 + (2 + 3 * 9) = 165となり、下の行では右辺になりますから和 = 165となります。    
       あ
i = 10 のとき 和 = 和 + (2 + 3 * i)    
和 = 165 + (2 + 3 * 10) = 187となり、下の行では右辺になりますから和 = 187となります。    


めでたくトレース結果は一致しました。

大変お疲れ様です。

ー*-*-*-*-*-*-*-*-*-*-*-*-*
第9話への課題の課題です。

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乗を計算してくれるもの

が必要となります。

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

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


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



第3章第7話へ 第3章第9話へ

本講義トップへ