<問題>大きさ10の配列dに、ランダムに生成された1-100までの整数を格納し、表示しよう。
その中で最大のものを求めよ。 (教科書 p6 例1.1 が疑似言語によるアルゴリズム)
<実行結果>
(たとえば)
d[0] = 57
d[1] = 54
d[2] = 94
d[3] = 52
d[4] = 69
d[5] = 37
d[6] = 8
d[7] = 72
d[8] = 82
d[9] = 26
最大値は94
<ヒント> 課題0101, 課題0104の勝ち抜き法を使おう!
解答例 #include <stdio.h> #include <stdlib.h> #include <time.h> /* マクロ 文字列の置き換え。Nが10に置き換え。Nを変えて再コンパイル */ #define N 10 int main (void) { int d[N]; int i; int big; /* 最大値 */ /* C1 変数やデータ構造が、どんな情報を表現しているか */ srand((unsigned int)time(NULL)); /* 乱数を格納しよう */ /* C4 ひと固まりのプログラム(ブロック)や関数が表現している手続きの概要 */ for (i = 0; i < N; i++) { d[i]= rand()%100 + 1; } /* 各要素を表示しよう */ for (i = 0; i < N; i++) { printf("d[%d] = %d \n", i, d[i]); } /* 最大値を探そう。勝ち抜き戦でいこう。*/ big = a[0]; /* 暫定最大値 */ /* C3 変数が、プログラムが表現している手続きの中で、どのような役割をしているか */ for ( i = 1 ; i < N; i++) if( big < d[i] ) /* 暫定最大値の負け */ /C5 1行程度のプログラムが表現している手続き */ big = d[i]; printf("最大値は%dです\n", big); return 0; }