マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第6章 6次魔方陣・8次魔方陣の作成
第9話 最小値を求める
⁂
がUTF‑8になっている場合にはShift-JISに変更して
エンコード付きで保存してください。

(
8 3 4 9 1 5 2 7 6 すなわち
a[0] = 8
a[1] = 3
a[2] = 4
a[3] = 9
a[4] = 1
a[5] = 5
a[6] = 2
a[7] = 7
a[8] = 6
最小値はa[4] = 1 です。
)
を実現するプログラムコード例
#include<iostream>//インクルードファイルiostreamの読み込み
#include<conio.h>//while(!_kbhit());を使うためのお呪い
#include<string> //文字列変数を使えるようにするために組み込む
#include <iomanip> //setprecisionを使えるように組み込む
#include <cmath>//powなどを使うときに必要
#include <ctime>//time()(←現時刻発生する関数)を使うために必要
using namespace std;//coutを使うときに必要なお呪い
const int n = 9;//具体的な数字でコーティングするのではなく必ずnでコーティン
グしてください。
void 並び替え();
int main() {//私は社長だ。
並び替え();
while (!_kbhit());//待機させるための命令
return(0);//int main()終わるためのお呪い
}
void 並び替え() {
int a[9] = { 8,3,4,9,1,5,2,7,6 };//aの定義と初期化
for (int i = 0; i < 9; i++) {
cout << a[i] << " ";//aの内容表示
}
cout << "すなわち" << endl;
for (int i = 0; i < 9; i++) {
cout << "a["<<i<<"] = "<<a[i]
<< endl;
}
int 最小値 = 100;
int ik;//最小値になるときのiを収納する変数
for (int i = 0; i < n; i++) {
if (a[i] < 最小値) {
最小値 = a[i];
ik = i;
}
}
cout << endl;
cout << "最小値はa[" << ik << "] = "
<< a[ik] << " です。" << endl;
}
では前話の例題
例題
8 3 4 9 1 5 2 7 6
を小さい順に並べ直して
1 2 3 4 5 6 7 8 9
に取り組みましょう。
ヒントは2次元for文で
for(int i = 0;i < n;i++) {
for(int j = i;j < n;j++) {
という書き方を使うことです。
最小値を見つける度に表示させ、
それを除いた整数値群の最小値を探し出し…

(
8 3 4 9 1 5 2 7 6 すなわち
a[0] = 8
a[1] = 3
a[2] = 4
a[3] = 9
a[4] = 1
a[5] = 5
a[6] = 2
a[7] = 7
a[8] = 6
最小値はa[4] = 1 です。
1 2 3 4 5 6 7 8 9
)