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

各学生の偏差値
1人目 : 54.73
2人目 : 45.86
3人目 : 48.82
4人目 : 60.64
5人目 : 39.95
6人目 : 31.08
7人目 : 66.56
8人目 : 51.77
9人目 : 42.90
10人目 : 57.69