配列内の整数値から最大値(最小値)を探索する

配列内の整数値の中から最大値(最小値)を探索してみます。
配列内を順番に確認し最大値を探します。
1.分岐制御では、基本的に2つの値の比較になるので、
 配列内の先頭値をいったん最大値としてキープします。
2.キープした値と配列先頭から2番目の値から比較を開始し、
 配列内の値の方が大きい場合は、キープ値をその値と
 入れ替え、そのときまでの最大値とします。
3.この2.の操作を末尾の要素までまで繰り返します。
これで、最後のキープされた値が配列内の最大値となります。
※最小値を探索する場合は、キープ値を最大値ではなく
 そのときの最小値をキープするようにします。

これをプログラムしてみます。

・プロジェクトを作成します。
 Visual Studio 2022を起動し、
 新しいプロジェクトを作成します。
 ・プロジェクトタイプ:"コンソールアプリ"
 ・プロジェクト名:"ct_104_2"
 とします。

プロジェクトの作成
プロジェクトの作成

 ※プロジェクトの作成方法は、PCでC言語基礎編の
  ・2つの入力値(整数値)の四則演算結果を表示する
  を参考にして下さい。

・プログラム記述・編集画面が表示されるので、
 以下のプログラムを記述します。

プログラム記述前の編集画面
プログラム記述前の編集画面
プログラム記述後の編集画面
プログラム記述後の編集画面

 プログラムの記述内容

// 配列内の最大値(最小値)を探索する
#include <iostream>

int main()
{
    // 変数宣言と初期化
    int array[] = { 5,1,7,6,4,8,2,10,3,9 };
    int max;
    int num;

    // array配列の要素数を取得
    num = sizeof(array) / sizeof(array[0]);

    // 初期設定として変数maxの(array[0]を設定
    max = array[0];
    // 配列要素の二つ目から最後までを変数maxと比較ループ
    for (int i = 1; i < num; i++) {
        // 変数maxよりarray[i]の要素の方が大きい場合maxへ入れ換える
        if (max < array[i]) {
            max = array[i];
        }
    }

    // 配列内の最大値の表示
    printf("最大値: %d\n", max);

    return EXIT_SUCCESS;
}

 簡単なプログラム解説です。

  ・変数宣言と初期化
   int array[] = { 5,1,7,6,4,8,2,10,3,9 };
    今回、最大値を探索するための対象配列を宣言します。
   int max;
    最大値を格納(キープ)するための変数
   int num;
    ループ回数に利用する配列の要素数を格納するための変数

  ・array配列の要素数を取得
   num = sizeof(array) / sizeof(array[0]);
    この式によって、配列内の要素数を取得できます。

  ・初期設定として変数maxの(array[0]を設定
   max = array[0];
    比較演算では比較対象が必要なので、
    配列内の先頭の値 array[0] を 変数 max に仮格納します。
    ※配列内の数値範囲が完全に把握できている場合は、
     その範囲内の最大値以下の値を仮置きしてもよいですが、
     探索不良になる危険性があるので避けるのがよいでしょう。
     これは、配列値に変更があった場合などに、
     設定した値が最大値より大きい可能性があるからです。

  ・配列要素の二つ目から最後までを変数maxと比較ループ
     for (int i = 1; i < num; i++) {
       if (max < array[i]) {
         max = array[i];
       }
     }

    ループは配列array[]の2つ目の値(要素)から、
    キープした変数maxと比較し、配列内の値の方が大きければ
    その値を変数maxに入れ替えながら、配列の末尾まで繰り返します。        
    ※最小値を探索する場合は、
     if (max < array[i]) を if (max > array[i]) を
     比較演算子を入れ替える( "<" → ">" )だけで可能になります。
     変数名が max ですがこれは特に問題ではありませんね。
     気にはなりますが。。。 
    ※初期設定としての変数 max の値に配列 array[0] を使用せず、
     最大値以下の適当な値を設定した場合、繰り返しの初期値は
     int i = 1 からではなく、int i = 0 から始める必要があります。
     これは、配列要素の array[0] の値が最大値である場合があるからです。

  ・配列内の最大値の表示
   printf("最大値:%d\n", max);
    繰り返しが終わった時点で、変数 max には配列内の最大値が
    キープされていますのでこれを表示します。

・実行してみます。
 上段メニュー"デバッグ(D)"のサブメニューより、
 "デバッグなしで開始(H)"を選択します。

ビルド、実行指示画面
ビルド、実行指示

・実行結果は、デバッグコンソール画面が開き表示されます。
 ※この実行では、最大値として、10 が表示されます。
 ※この画面は、何かのキーを打鍵することで閉じることができます。

実行結果(デバッグコンソール)画面
実行結果(デバッグコンソール)画面