fork(2) download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <time.h>
  4. #include <math.h>
  5.  
  6. // データ数
  7. #define N 10
  8.  
  9. // データ生成関数
  10. void createData(int data[N])
  11. {
  12. // ループ変数
  13. int idx = 0;
  14. // 乱数のシード初期化
  15. srand((unsigned)time(NULL));
  16. // ループでN個分乱数データを作成
  17. for(idx = 0; idx < N; idx++)
  18. {
  19. // データに乱数値を設定
  20. data[idx] = rand() % 100;
  21. }
  22. }
  23.  
  24. // 最大を取得
  25. int max(int data[N])
  26. {
  27. // 最大(最初のデータを初期値に設定)
  28. int m = data[0];
  29. // ループ変数
  30. int idx = 1;
  31. // ループでデータと比較をして最大を求める
  32. for(; idx < N; idx++)
  33. {
  34. // 最大と比較して大きい場合最大データを置き換える
  35. if(m < data[idx])
  36. {
  37. m = data[idx];
  38. }
  39. }
  40. // 最大を返却
  41. return m;
  42. }
  43.  
  44. // 最小を取得
  45. int min(int data[N])
  46. {
  47. // 最小(最初のデータを初期値に設定)
  48. int m = data[0];
  49. // ループ変数
  50. int idx = 0;
  51. // ループでデータと比較をして最小を求める
  52. for(; idx < N; idx++)
  53. {
  54. // 最小と比較して小さい場合最小データを置き換える
  55. if(m > data[idx])
  56. {
  57. m = data[idx];
  58. }
  59. }
  60. // 最小を返却
  61. return m;
  62. }
  63.  
  64. // 平均を取得
  65. double avg(int data[N])
  66. {
  67. // 合計
  68. int sum = 0;
  69. // ループ変数
  70. int idx = 0;
  71. // 平均
  72. double a = 0.0;
  73. // ループでデータの合計を求める
  74. for(; idx < N; idx++)
  75. {
  76. // 合計にデータを加算
  77. sum += data[idx];
  78. }
  79. // データの合計をデータ数で割って平均を求める
  80. a = (double)sum / N;
  81. // 平均を返却
  82. return a;
  83. }
  84.  
  85. // 標準偏差を取得
  86. double std(int data[N])
  87. {
  88. // ループ変数
  89. int idx = 0;
  90. // 平均
  91. double a = avg(data);
  92. // 分散
  93. double sigma = 0.0;
  94. // 標準偏差
  95. double s = 0.0;
  96. // ループで分散を求める
  97. for(; idx < N; idx++)
  98. {
  99. // (xi - avg)^2を加算
  100. sigma += pow((double)data[idx] - a, 2.0);
  101. }
  102. sigma /= N;
  103. // 分散の平方根を標準偏差として計算
  104. s = sqrt(sigma);
  105. // 標準偏差を返却
  106. return s;
  107. }
  108.  
  109. // メイン関数
  110. int main()
  111. {
  112. // ループ変数
  113. int idx = 0;
  114. // データ
  115. int data[N] = {0};
  116. // データ生成
  117. createData(data);
  118. // 生成したデータを表示
  119. for(idx = 0; idx < N; idx++)
  120. {
  121. printf("%d ", data[idx]);
  122. }
  123. printf("\n");
  124.  
  125. // 最大
  126. int iMax = max(data);
  127. // 最小
  128. int iMin = min(data);
  129. // 平均
  130. double dAvg = avg(data);
  131. // 標準偏差
  132. double dStd = std(data);
  133. // 各データを出力
  134. printf("最大  :%d\n", iMax);
  135. printf("最小  :%d\n", iMin);
  136. printf("平均  :%lf\n", dAvg);
  137. printf("標準偏差:%lf\n", dStd);
  138.  
  139. return 0;
  140. }
  141.  
Success #stdin #stdout 0s 9424KB
stdin
Standard input is empty
stdout
81 32 61 96 69 80 72 81 67 54 
最大  :96
最小  :32
平均  :69.300000
標準偏差:16.757386