マルチスレッド版数独自動生成ソフト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






第6章第8話へ 第6章第10話へ

本講義トップへ