fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. // qsort用の比較関数 (double型の昇順ソート用)
  5. int compare(const void *a, const void *b) {
  6. double da = *(const double *)a;
  7. double db = *(const double *)b;
  8. if (da < db) return -1;
  9. if (da > db) return 1;
  10. return 0;
  11. }
  12.  
  13. int main(void) {
  14. double random_numbers[50];
  15. int found_any = 0;
  16.  
  17. // 乱数の種(シード)を固定(レポート用に毎回同じ結果にするため)
  18. srand(42);
  19.  
  20. // 1. 0以上100未満の乱数を50個発生
  21. for (int i = 0; i < 50; i++) {
  22. random_numbers[i] = ((double)rand() / RAND_MAX) * 100.0;
  23. }
  24.  
  25. // 2. 昇順にソート (要素数50, 各要素のサイズはsizeof(double))
  26. qsort(random_numbers, 50, sizeof(double), compare);
  27.  
  28. printf("--- ソート済みの全乱数(一部抜粋) ---\n");
  29. for (int i = 0; i < 50; i++) {
  30. // レポートが長くならないよう、該当しそうな箇所の前後を主に確認(ここでは全表示の例)
  31. printf("[%02d]: %.4f\n", i, random_numbers[i]);
  32. }
  33.  
  34. // 3. 先頭2桁が '10'(つまり10.0以上11.0未満)のものを探索
  35. printf("\n--- 先頭2桁が '10' (10以上11未満) のものを探索 ---\n");
  36. for (int i = 0; i < 50; i++) {
  37. if (random_numbers[i] >= 10.0 && random_numbers[i] < 11.0) {
  38. printf("発見: [%02d]番目の要素 = %.4f\n", i, random_numbers[i]);
  39. found_any = 1;
  40. }
  41. }
  42.  
  43. if (!found_any) {
  44. printf("条件に一致する乱数は見つかりませんでした。\n");
  45. }
  46.  
  47. return 0;
  48. }
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
--- ソート済みの全乱数(一部抜粋) ---
[00]: 2.4924
[01]: 3.3470
[02]: 8.1672
[03]: 10.6745
[04]: 11.9945
[05]: 13.5728
[06]: 20.6265
[07]: 21.5531
[08]: 21.8850
[09]: 23.1427
[10]: 25.0128
[11]: 25.2085
[12]: 27.4766
[13]: 28.2567
[14]: 30.1656
[15]: 31.7860
[16]: 32.9964
[17]: 34.8560
[18]: 36.4993
[19]: 38.9312
[20]: 42.2487
[21]: 45.4396
[22]: 48.4289
[23]: 51.7186
[24]: 51.8654
[25]: 55.0956
[26]: 55.5231
[27]: 55.6751
[28]: 56.4652
[29]: 56.5961
[30]: 57.3842
[31]: 58.3716
[32]: 62.8874
[33]: 63.6559
[34]: 69.0636
[35]: 72.8546
[36]: 74.3271
[37]: 76.0672
[38]: 76.5381
[39]: 79.6128
[40]: 82.9598
[41]: 86.3622
[42]: 88.8643
[43]: 91.3567
[44]: 91.3680
[45]: 94.0269
[46]: 96.5402
[47]: 98.1760
[48]: 98.3568
[49]: 99.2099

--- 先頭2桁が '10' (10以上11未満) のものを探索 ---
発見: [03]番目の要素 = 10.6745