マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第4章 if文(もしもボックス))
第8話 if(p){A:}else{B;}を入れ子式に使う!

(
33 56 合格
34 0 不合格
35 92 合格
36 31 不合格
37 58 合格
38 13 不合格
39 57 合格
40 73 合格
41 11 不合格
42 37 不合格
43 21 不合格
44 84 合格
45 86 合格
46 43 不合格
47 30 不合格
48 96 合格
49 100 合格
50 3 不合格
51 29 不合格
52 94 合格
}
を実現するコード例
#include<iostream>//インクルードファイルiostreamの読み込み
#include<conio.h>//while(!_kbhit());を使うためのお呪い
#include<string> //文字列変数を使えるようにするために組み込む
#include <iomanip> //setprecisionを使えるように組み込む
#include <cmath>//powなどを使うときに必要
#include <ctime>//time()(←現時刻発生する関数)を使うために必要
using namespace std;//coutを使うときに必要なお呪い
void ランダムデータの生成と判定();//0以上100以下の整数データを生成して合否判定をする。
int main() {//私は社長だ。
ランダムデータの生成と判定();
while (!_kbhit());//待機させるための命令
return(0);//int main()終わるためのお呪い
}
void ランダムデータの生成と判定() {
//0以上100以下の整数データを生成して合否判定をする。
srand((unsigned)time(NULL));//シード値を現在時刻から取得
cout << "出席番号 得点 合否判定" << endl;
for (int i = 0; i < 100; i++) {
int 得点 = rand() % 101;//0以上100以下の整数データを生成する。
cout << " ";
if (i + 1 == 100) {
cout << i + 1;
}
else {
if (i + 1 >= 10) {
cout << " " << i + 1;
}
else {
cout << " " << i + 1;
}
}
if (得点 < 10) {
cout << " ";
}
else {
if (得点 < 100) {
cout << " ";
}
}
cout << " " << 得点;
if (得点 >= 50) {
cout << " 合格" << endl;
}
else {
cout << " 不合格" << endl;
}
}
}
テキストファイル
次話では2次元for文に挑戦します。
本講義最難関に挑むことになります。
今までの発想は1方向しかない1次元でしたが、
縦と横の二つの方向を持つfor文になります。
発想を根本から変えないと理解出来ないことになりますので、
2次元の考え方をしてください。
1次元の for 文は「1列に並べる考え方」でした。
2次元の for 文は、「縦と横で“表”を作る考え方」です。
九九の表や、座標(マス目)をイメージすると理解しやすくなります。
これをクリアできなければ、
3次魔方陣の自動生成など不可能ですし、
数独自動生成ソフトの開発も夢の夢になります。
そのとき理解できなくても、
ちゃんと考え続け、繰り返して読んでください。
学習方法は、進んでは戻りを繰り返りして読む以外にありません。
絶対にへこたれてはいけません。
大事なことですら繰り返します。
不屈の精神です。
第4章第7話へ 第4章第9話へ
本講義トップへ