#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;
// 乱数の種(シード)を固定(レポート用に毎回同じ結果にするため)
// 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;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCi8vIHFzb3J055So44Gu5q+U6LyD6Zai5pWwIChkb3VibGXlnovjga7mmIfpoIbjgr3jg7zjg4jnlKgpCmludCBjb21wYXJlKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIpIHsKICAgIGRvdWJsZSBkYSA9ICooY29uc3QgZG91YmxlICopYTsKICAgIGRvdWJsZSBkYiA9ICooY29uc3QgZG91YmxlICopYjsKICAgIGlmIChkYSA8IGRiKSByZXR1cm4gLTE7CiAgICBpZiAoZGEgPiBkYikgcmV0dXJuIDE7CiAgICByZXR1cm4gMDsKfQoKaW50IG1haW4odm9pZCkgewogICAgZG91YmxlIHJhbmRvbV9udW1iZXJzWzUwXTsKICAgIGludCBmb3VuZF9hbnkgPSAwOwoKICAgIC8vIOS5seaVsOOBrueoru+8iOOCt+ODvOODie+8ieOCkuWbuuWumu+8iOODrOODneODvOODiOeUqOOBq+avjuWbnuWQjOOBmOe1kOaenOOBq+OBmeOCi+OBn+OCge+8iQogICAgc3JhbmQoNDIpOwoKICAgIC8vIDEuIDDku6XkuIoxMDDmnKrmuoDjga7kubHmlbDjgpI1MOWAi+eZuueUnwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1MDsgaSsrKSB7CiAgICAgICAgcmFuZG9tX251bWJlcnNbaV0gPSAoKGRvdWJsZSlyYW5kKCkgLyBSQU5EX01BWCkgKiAxMDAuMDsKICAgIH0KCiAgICAvLyAyLiDmmIfpoIbjgavjgr3jg7zjg4ggKOimgee0oOaVsDUwLCDlkITopoHntKDjga7jgrXjgqTjgrrjga9zaXplb2YoZG91YmxlKSkKICAgIHFzb3J0KHJhbmRvbV9udW1iZXJzLCA1MCwgc2l6ZW9mKGRvdWJsZSksIGNvbXBhcmUpOwoKICAgIHByaW50ZigiLS0tIOOCveODvOODiOa4iOOBv+OBruWFqOS5seaVsO+8iOS4gOmDqOaKnOeyi++8iSAtLS1cbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1MDsgaSsrKSB7CiAgICAgICAgLy8g44Os44Od44O844OI44GM6ZW344GP44Gq44KJ44Gq44GE44KI44GG44CB6Kmy5b2T44GX44Gd44GG44Gq566H5omA44Gu5YmN5b6M44KS5Li744Gr56K66KqN77yI44GT44GT44Gn44Gv5YWo6KGo56S644Gu5L6L77yJCiAgICAgICAgcHJpbnRmKCJbJTAyZF06ICUuNGZcbiIsIGksIHJhbmRvbV9udW1iZXJzW2ldKTsKICAgIH0KCiAgICAvLyAzLiDlhYjpoK0y5qGB44GMICcxMCfvvIjjgaTjgb7jgooxMC4w5Lul5LiKMTEuMOacqua6gO+8ieOBruOCguOBruOCkuaOoue0ogogICAgcHJpbnRmKCJcbi0tLSDlhYjpoK0y5qGB44GMICcxMCcgKDEw5Lul5LiKMTHmnKrmuoApIOOBruOCguOBruOCkuaOoue0oiAtLS1cbiIpOwogICAgZm9yIChpbnQgaSA9IDA7IGkgPCA1MDsgaSsrKSB7CiAgICAgICAgaWYgKHJhbmRvbV9udW1iZXJzW2ldID49IDEwLjAgJiYgcmFuZG9tX251bWJlcnNbaV0gPCAxMS4wKSB7CiAgICAgICAgICAgIHByaW50Zigi55m66KaLOiBbJTAyZF3nlarnm67jga7opoHntKAgPSAlLjRmXG4iLCBpLCByYW5kb21fbnVtYmVyc1tpXSk7CiAgICAgICAgICAgIGZvdW5kX2FueSA9IDE7CiAgICAgICAgfQogICAgfQoKICAgIGlmICghZm91bmRfYW55KSB7CiAgICAgICAgcHJpbnRmKCLmnaHku7bjgavkuIDoh7TjgZnjgovkubHmlbDjga/opovjgaTjgYvjgorjgb7jgZvjgpPjgafjgZfjgZ/jgIJcbiIpOwogICAgfQoKICAgIHJldHVybiAwOwp9