fork download
  1. program GradeStatistics;
  2.  
  3. uses Math;
  4.  
  5. const
  6. N = 10;
  7.  
  8. var
  9. score, sorted: array[1..N] of Real;
  10. hensachi: array[1..N] of Real;
  11. i, j, pass: Integer;
  12. sum, avg, median, maxv, minv, sd, temp: Real;
  13.  
  14. begin
  15. sum := 0;
  16. pass := 0;
  17.  
  18. writeln('10人分の点数を入力してください');
  19.  
  20. for i := 1 to N do
  21. begin
  22. readln(score[i]);
  23. sorted[i] := score[i];
  24. sum := sum + score[i];
  25.  
  26. if score[i] >= 60 then
  27. pass := pass + 1;
  28. end;
  29.  
  30. avg := sum / N;
  31.  
  32. maxv := score[1];
  33. minv := score[1];
  34.  
  35. for i := 2 to N do
  36. begin
  37. if score[i] > maxv then
  38. maxv := score[i];
  39. if score[i] < minv then
  40. minv := score[i];
  41. end;
  42.  
  43. {並べ替え}
  44. for i := 1 to N - 1 do
  45. for j := i + 1 to N do
  46. if sorted[i] > sorted[j] then
  47. begin
  48. temp := sorted[i];
  49. sorted[i] := sorted[j];
  50. sorted[j] := temp;
  51. end;
  52.  
  53. median := (sorted[5] + sorted[6]) / 2;
  54.  
  55. sd := 0;
  56. for i := 1 to N do
  57. sd := sd + Sqr(score[i] - avg);
  58.  
  59. sd := Sqrt(sd / N);
  60.  
  61. writeln;
  62. writeln('平均点 = ', avg:0:2);
  63. writeln('中央値 = ', median:0:2);
  64. writeln('最高点 = ', maxv:0:2);
  65. writeln('最低点 = ', minv:0:2);
  66. writeln('標準偏差 = ', sd:0:2);
  67. writeln('合格者数 = ', pass);
  68.  
  69. writeln;
  70. writeln('偏差値');
  71.  
  72. for i := 1 to N do
  73. begin
  74. if sd = 0 then
  75. hensachi[i] := 50
  76. else
  77. hensachi[i] := 50 + 10 * (score[i] - avg) / sd;
  78.  
  79. writeln(i, '人目 : ', hensachi[i]:0:2);
  80. end;
  81. end.
Success #stdin #stdout 0s 5320KB
stdin
80
65
90
70
55
100
60
75
85
40
stdout
10人分の点数を入力してください

平均点 = 72.00
中央値 = 72.50
最高点 = 100.00
最低点 = 40.00
標準偏差 = 16.91
合格者数 = 8

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