第7講 for文を理解しよう(多次元ループ)
第6話 最大値・最小値の抽出
Java

13,33,55,24,90,41,10,9,86,46
と並んだデータの中から、最大値と最小値を見つけるにはどうしたらよいでしょうか。
まず、
int mx,mn;
int型の整数mxとmnを用意します。
mxはmaxiumの略、mnはminimunの略です。
本講義の方針で、基本は変数名は2文字以下にするをまもったわけです。
そして、mxもmnもあり得ない値を設定しておきます。
mxについてはあり得ない大きな値、mnについてはあり得ない小さな値をセットしておくのです。
例えば、mx=-1、mn=200です。

そして、発生したランダムデータと比較して、
ランダムデータの方がmxより大きい場合、mx=aとします。
ランダムデータの方がmnより小さい場合は、mn=aとします。
これを繰り返していけば、mxは最大値、mnは最小値になることお分かりでしょうか。

データ数を少なくしてトレースしてみましょう。
45,22,55の場合で思考実験をしていましょう。
-1と45を比較すると45の方が大きいので、
mx=45
200と45では、200の方が大きいので
mn=45
次に、mxの45と22の比較です。
22の方が小さいので、何もされません。
mnの45と22の比較では、22の方が小さいので、
mm=22
とされます。
最後に、mxの45と55の比較で、55の方が大きいので
mx=55
が実行されます。
mnの22と55の比較では、22の方が小さいので何もされません。

以上からmx=55、mm=22で45,22,45のデータ群の最大値と最小値になっていることがわかります。

したがって、解答例コードは下のようになります。
class w{
  public static void main(String args[]){
      f();
  }
  public static void f(){
    int i,a,w,mn,mx;
    mn=100;
    mx=0;
    System.out.println("ランダムデータの発生");
    for(i=0;i<10;i++){
      a=(int)(Math.random()*101);
      System.out.print (a);
      System.out.print (" ");
      if(a<mn)mn=a;
      if(a>mx)mx=a;
    }
    System.out.println();
    System.out.print ("最大値:");
    System.out.print (mx);
    System.out.print (" ");
    System.out.print ("最小値:");
    System.out.print (mn);
    System.out.println();
  }
}

では皆さん、この解答例を参考に次の最大値と最小値を抽出した成績一覧表を作成しましょう。
入門



第5話へ 第7話へ

戻る

VB講義へ
VB講義基礎へ
vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部