#include <stdio.h>
#include <stdlib.h>

// qsort用の比較関数 (double型の昇順ソート用)
int compare(const void *a, const void *b) {
    double da = *(const double *)a;
    double db = *(const double *)b;
    if (da < db) return -1;
    if (da > db) return 1;
    return 0;
}

int main(void) {
    double random_numbers[50];
    int found_any = 0;

    // 乱数の種（シード）を固定（レポート用に毎回同じ結果にするため）
    srand(42);

    // 1. 0以上100未満の乱数を50個発生
    for (int i = 0; i < 50; i++) {
        random_numbers[i] = ((double)rand() / RAND_MAX) * 100.0;
    }

    // 2. 昇順にソート (要素数50, 各要素のサイズはsizeof(double))
    qsort(random_numbers, 50, sizeof(double), compare);

    printf("--- ソート済みの全乱数（一部抜粋） ---\n");
    for (int i = 0; i < 50; i++) {
        // レポートが長くならないよう、該当しそうな箇所の前後を主に確認（ここでは全表示の例）
        printf("[%02d]: %.4f\n", i, random_numbers[i]);
    }

    // 3. 先頭2桁が '10'（つまり10.0以上11.0未満）のものを探索
    printf("\n--- 先頭2桁が '10' (10以上11未満) のものを探索 ---\n");
    for (int i = 0; i < 50; i++) {
        if (random_numbers[i] >= 10.0 && random_numbers[i] < 11.0) {
            printf("発見: [%02d]番目の要素 = %.4f\n", i, random_numbers[i]);
            found_any = 1;
        }
    }

    if (!found_any) {
        printf("条件に一致する乱数は見つかりませんでした。\n");
    }

    return 0;
}