第3講 繰り返し処理for文
第5話 scanf()によって、初項・交差・末項の値を取得して、等差数列の和を求めるアプリ
003
    ↓
キーボードから初項を入力してエンター
    ↓
031
    ↓
キーボードから交差を入力してエンター
    ↓
032
    ↓
キーボードから末項を入力してエンター
    ↓
033
を実現するアプリコード例
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
int main() {
  int s, k, m; //s:初項 k:交差 m:末項
  cout << "初項、交差、末項の順に入力して下さい。" << endl;
  cout << "初項=";
  scanf_s("%d", &s); //キーボードからaの値を取得
  cout << "交差=";
  scanf_s("%d", &k); //キーボードからaの値を取得
  cout << "末項=";
  scanf_s("%d", &m); //キーボードからaの値を取得
  int w = 0; //w:和を求める変数 宣言と同時に0に初期化
  for (int i = s; i <= m; i += k)w += i;
  cout << "初項" << s << "、交差" << k << "、末項" << m << "の等差数列の和=" << w << endl;
}
(読者から指摘がありました。
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
int main() {
  int s, k, m; //s:初項 k:交差 m:末項
  cout << "初項、交差、末項の順に入力して下さい。" << endl;
  cout << "初項=";
  scanf("%d", &s); //キーボードからaの値を取得
  cout << "交差=";
  scanf("%d", &k); //キーボードからaの値を取得
  cout << "末項=";
  scanf("%d", &m); //キーボードからaの値を取得
  int w = 0; //w:和を求める変数 宣言と同時に0に初期化
  for (int i = s; i <= m; i += k)w += i;
  cout << "初項" << s << "、交差" << k << "、末項" << m << "の等差数列の和=" << w << endl;
}
ではエラーすると。
確認したところエラーしますので、
本日2019/04/15訂正しました。
以降も順々に直していきますが、
scanf("%d", &s); 等が出てきましたら、
scanf_s("%d", &s); と変更して下さい。
誤りについてお詫び申し上げます。
また、指摘していただいた読者に心よりお礼申し上げます。)

さて、今回からアプリ
(アプリケーションソフトの最初の3文字、
アプリケーションソフトは応用ソフトの意味。
タブレットが出てくるようになってから、
アプリと略称するようになりましたが、
昔は後ろの3文字をとり、
ソフトと略称しました。
本サイトでは、両方の略称を気分で使い分けますが、
両方ともアプリケーションソフト=応用ソフトです。)
という名称を使うのは、キーボードから取得できるようになって、
はじめて実用的なプログラムになったからです。

  int w = 0; //w:和を求める変数 宣言と同時に0に初期化
に注目してください。
最初に値を入れることを変数の初期化といいます。
この例のように、宣言すると同時に初期化することも出来ます。
是非とも覚えておいてください。
また、C++では自由な位置で宣言出来ることを使っています。
031
その意義は、wのスコープ(変数の有効範囲)を赤矢印に限定できることにあったのですね。


尚、末項の入力は正確でなくても大丈夫です。
例えば、
初項=4、交差=3の第4項までの和なら
4+7+10+13
ですが、
末項=15で入力しても同じ
4+7+10+13
が計算されます。
理由は、
  for (i = s; i <= m; i += k) {
をご覧になればわかります。
i += kの計算から13の次は17で、 i <= mの条件を満たしませんから、
for文実行の範囲外になり、
+17の部分は計算されないからです。

Console.ReadLine()によってキーボードから値が入力されるようになって便利にはなりましたが、
今回は1回しか使えませんね。
これではアプリの名に値いません。
そこで、×をしない限り何回でも計算できるように、
改良します。
ヒントとして、
032
×が押されない限り、上のような画面が無限に続くようにするためには、
#include<iostream> //入出力のために組み込む
using namespace std; //coutを使えるようにするために必要
int main() {
  int a;
  for (;;) {
    cout<<"キーボードからaの値を入力してください。"<<endl;
    cout<<"a=";
    scanf_s("%d", &a);
    cout<<"入力された値は="<<a<<endl;
    printf("アプリを終了するときには×をクリックしてください。");
    cout<<endl<<endl;
  }
}
とすればよいということをお伝えしておきましょう。
実際にコピペしてCtrl+F5をしてください。

for (;;) {}とすると、同じことが無限に繰り返されます。
すべてを空白にすることが出来ます。
もちろん、
int i;
for (i = 0;;) {}
としても良いですし、
int i;
for (i = 0;i<2;) {}
としても結果は同じです。
i++;がないためにiはいつまでも0のままですから。

では皆さんに×をクリックしない限り何回でも使える
002
アプリを開発していただきたいと思います。

ヒントはfor文は入れ子式につかることが出来るということです。
  int i,j;
  for(i=0;i<10;i++){
     ・・・
     ・・・
    for(j=0;j<5;j++){
       
・・・
       ・・・
       ・・・

    }
     ・・・
     ・・・
  }
2次元繰り返し処理といいます。
(因みに上の例だとの部分は10×5=50回繰り返されます。
for(i=0;i<10;i++)の場合繰り返される回数は10回です。
なぜなら、iは
0,1,2,3,4,5,6,7,8,9
の10通りの値を取るからです。
for(j=0;j<5;j++)なら5回です。
jの値は、
0,1,2,3,4
の5通りですから。
第3講第1話で述べたように、0のカウントを忘れないでください。)


第4話へ 第6話へ
 
002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ