第 12 回 - ソーティング(1)

[5/1, 2006 H.Aman]
67x27(1669bytes)   67x27(1669bytes) 【課題 1】

例題 1

5 個の整数を順に読み込み,その中の最大値を表示しなさい.
ただし,各整数は入力順に配列 a に格納すること.

方針・アルゴリズム

仮定より, 入力された各整数は a[0], a[1], ..., a[4] としてアクセスできる.
ここでは 「最大値は m 番目の整数( a[m] )」 という言い方をし, m が 0 〜 4 のいずれになるかを見つけ出す.
  • まず,m = 0 と仮定( a[0] が最大値と仮定)する.
  • そして,i の値を 1 〜 4 の範囲で変化させながら, a[m] < a[i] ならば m ← i とする.
    (※ a[i] の方が大きいので, 改めてそちらを最大値として仮定するという意味)
80x16(888bytes) フローチャート

コーディング例

     1	/*
     2	 * プログラミング演習 第 12 回
     3	 * [例題 1]
     4	 * (C) 2006 Hirohisa AMAN <aman@cs.ehime-u.ac.jp, aman@computer.org>
     5	 */
     6	#include <stdio.h>
     7	
     8	int main(void){
     9	  int i, m, a[5];
    10	
    11	  /* a[i] を読み込む */
    12	  for ( i = 0; i < 5; i++ ){
    13	    scanf("%d", &a[i]);
    14	  }
    15	
    16	  m = 0;  /* a[0] を最大値と仮定 */
    17	  for ( i = 1; i < 5; i++ ){
    18	    if ( a[m] < a[i] ){ 
    19	      m = i;  /* 最大値の位置の更新 */
    20	    }
    21	  }
    22	
    23	  printf("最大値 = %d\n", a[m]);
    24	
    25	  return 0;
    26	}
     
※左端の数字は行番号であり,ソースコードには含まれない点に注意!

コンパイル & 実行例

     $ gcc example12_1.c [Enter]
     $ ./a.out [Enter]
     8 -2 91 0 1 [Enter]
     最大値 = 91