fork download
  1. program StudentStatistics;
  2.  
  3. uses Math;
  4.  
  5. const
  6. MAX = 100;
  7.  
  8. var
  9. score, sorted: array[1..MAX] of Integer;
  10. hensachi: array[1..MAX] of Real;
  11. n, i, j, temp, pass: Integer;
  12. sum, ave, median, sd, variance: Real;
  13. maxScore, minScore: Integer;
  14.  
  15. begin
  16. { 人数入力(10人以上) }
  17. readln(n);
  18.  
  19. if n < 10 then
  20. begin
  21. writeln('人数は10人以上入力してください。');
  22. halt;
  23. end;
  24.  
  25. sum := 0;
  26. pass := 0;
  27.  
  28. { 点数入力 }
  29. for i := 1 to n do
  30. begin
  31. readln(score[i]);
  32. sorted[i] := score[i];
  33.  
  34. sum := sum + score[i];
  35.  
  36. if score[i] >= 60 then
  37. pass := pass + 1;
  38. end;
  39.  
  40. ave := sum / n;
  41.  
  42. { 最高点・最低点 }
  43. maxScore := score[1];
  44. minScore := score[1];
  45.  
  46. for i := 2 to n do
  47. begin
  48. if score[i] > maxScore then
  49. maxScore := score[i];
  50. if score[i] < minScore then
  51. minScore := score[i];
  52. end;
  53.  
  54. { 並べ替え(バブルソート) }
  55. for i := 1 to n - 1 do
  56. for j := 1 to n - i do
  57. if sorted[j] > sorted[j + 1] then
  58. begin
  59. temp := sorted[j];
  60. sorted[j] := sorted[j + 1];
  61. sorted[j + 1] := temp;
  62. end;
  63.  
  64. { 中央値 }
  65. if n mod 2 = 1 then
  66. median := sorted[(n + 1) div 2]
  67. else
  68. median := (sorted[n div 2] + sorted[n div 2 + 1]) / 2.0;
  69.  
  70. { 標準偏差 }
  71. variance := 0;
  72. for i := 1 to n do
  73. variance := variance + sqr(score[i] - ave);
  74.  
  75. variance := variance / n;
  76. sd := sqrt(variance);
  77.  
  78. { 偏差値 }
  79. for i := 1 to n do
  80. begin
  81. if sd = 0 then
  82. hensachi[i] := 50
  83. else
  84. hensachi[i] := 50 + 10 * (score[i] - ave) / sd;
  85. end;
  86.  
  87. { 出力 }
  88. writeln('平均 = ', ave:0:2);
  89. writeln('中央値 = ', median:0:2);
  90. writeln('最高点 = ', maxScore);
  91. writeln('最低点 = ', minScore);
  92. writeln('標準偏差 = ', sd:0:2);
  93. writeln('合格者数 = ', pass);
  94.  
  95. writeln;
  96. writeln('偏差値');
  97. for i := 1 to n do
  98. writeln(i:2, '人目 点数=', score[i]:3,
  99. ' 偏差値=', hensachi[i]:0:2);
  100. end.
Success #stdin #stdout 0s 5320KB
stdin
10
80
65
72
91
58
60
77
84
69
95
stdout
平均 = 75.10
中央値 = 74.50
最高点 = 95
最低点 = 58
標準偏差 = 11.94
合格者数 = 9

偏差値
 1人目  点数= 80  偏差値=54.10
 2人目  点数= 65  偏差値=41.54
 3人目  点数= 72  偏差値=47.40
 4人目  点数= 91  偏差値=63.32
 5人目  点数= 58  偏差値=35.67
 6人目  点数= 60  偏差値=37.35
 7人目  点数= 77  偏差値=51.59
 8人目  点数= 84  偏差値=57.46
 9人目  点数= 69  偏差値=44.89
10人目  点数= 95  偏差値=66.67