STEP 1.0

<問題>大きさ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;

}