program ScoreAnalysis;
const
MAX = 100;
var
n, i, j, passCount : Integer;
score, sorted : array[1..MAX] of Real;
sum, avg, median : Real;
maxScore, minScore : Real;
variance, stddev : Real;
temp, hensachi : Real;
begin
writeln('学生数を入力してください(10人以上)');
readln(n);
{ 10人未満なら終了 }
if n < 10 then
begin
writeln('学生数は10人以上で入力してください。');
halt;
end;
sum := 0;
passCount := 0;
writeln('点数を入力してください');
for i := 1 to n do
begin
readln(score[i]);
sorted[i] := score[i];
sum := sum + score[i];
if score[i] >= 60 then
passCount := passCount + 1;
end;
{ 平均 }
avg := sum / n;
{ 最高点・最低点 }
maxScore := score[1];
minScore := score[1];
for i := 2 to n do
begin
if score[i] > maxScore then
maxScore := score[i];
if score[i] < minScore then
minScore := score[i];
end;
{ 分散・標準偏差 }
variance := 0;
for i := 1 to n do
variance := variance + (score[i] - avg) * (score[i] - avg);
variance := variance / n;
stddev := sqrt(variance);
{ ソート }
for i := 1 to n - 1 do
for j := 1 to n - i do
if sorted[j] > sorted[j + 1] then
begin
temp := sorted[j];
sorted[j] := sorted[j + 1];
sorted[j + 1] := temp;
end;
{ 中央値 }
if n mod 2 = 1 then
median := sorted[(n + 1) div 2]
else
median := (sorted[n div 2] + sorted[n div 2 + 1]) / 2;
{ 結果表示 }
writeln;
writeln('平均 = ', avg:0:2);
writeln('中央値 = ', median:0:2);
writeln('最高点 = ', maxScore:0:2);
writeln('最低点 = ', minScore:0:2);
writeln('標準偏差 = ', stddev:0:2);
writeln('合格者数 = ', passCount);
writeln;
writeln('偏差値');
for i := 1 to n do
begin
if stddev = 0 then
hensachi := 50
else
hensachi := 50 + 10 * (score[i] - avg) / stddev;
writeln('学生', i, ' : ', hensachi:0:2);
end;
end.
cHJvZ3JhbSBTY29yZUFuYWx5c2lzOwoKY29uc3QKICBNQVggPSAxMDA7Cgp2YXIKICBuLCBpLCBqLCBwYXNzQ291bnQgOiBJbnRlZ2VyOwogIHNjb3JlLCBzb3J0ZWQgOiBhcnJheVsxLi5NQVhdIG9mIFJlYWw7CiAgc3VtLCBhdmcsIG1lZGlhbiA6IFJlYWw7CiAgbWF4U2NvcmUsIG1pblNjb3JlIDogUmVhbDsKICB2YXJpYW5jZSwgc3RkZGV2IDogUmVhbDsKICB0ZW1wLCBoZW5zYWNoaSA6IFJlYWw7CgpiZWdpbgogIHdyaXRlbG4oJ+WtpueUn+aVsOOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhCgxMOS6uuS7peS4iiknKTsKICByZWFkbG4obik7CgogIHsgMTDkurrmnKrmuoDjgarjgonntYLkuoYgfQogIGlmIG4gPCAxMCB0aGVuCiAgYmVnaW4KICAgIHdyaXRlbG4oJ+WtpueUn+aVsOOBrzEw5Lq65Lul5LiK44Gn5YWl5Yqb44GX44Gm44GP44Gg44GV44GE44CCJyk7CiAgICBoYWx0OwogIGVuZDsKCiAgc3VtIDo9IDA7CiAgcGFzc0NvdW50IDo9IDA7CgogIHdyaXRlbG4oJ+eCueaVsOOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhCcpOwoKICBmb3IgaSA6PSAxIHRvIG4gZG8KICBiZWdpbgogICAgcmVhZGxuKHNjb3JlW2ldKTsKICAgIHNvcnRlZFtpXSA6PSBzY29yZVtpXTsKCiAgICBzdW0gOj0gc3VtICsgc2NvcmVbaV07CgogICAgaWYgc2NvcmVbaV0gPj0gNjAgdGhlbgogICAgICBwYXNzQ291bnQgOj0gcGFzc0NvdW50ICsgMTsKICBlbmQ7CgogIHsg5bmz5Z2HIH0KICBhdmcgOj0gc3VtIC8gbjsKCiAgeyDmnIDpq5jngrnjg7vmnIDkvY7ngrkgfQogIG1heFNjb3JlIDo9IHNjb3JlWzFdOwogIG1pblNjb3JlIDo9IHNjb3JlWzFdOwoKICBmb3IgaSA6PSAyIHRvIG4gZG8KICBiZWdpbgogICAgaWYgc2NvcmVbaV0gPiBtYXhTY29yZSB0aGVuCiAgICAgIG1heFNjb3JlIDo9IHNjb3JlW2ldOwoKICAgIGlmIHNjb3JlW2ldIDwgbWluU2NvcmUgdGhlbgogICAgICBtaW5TY29yZSA6PSBzY29yZVtpXTsKICBlbmQ7CgogIHsg5YiG5pWj44O75qiZ5rqW5YGP5beuIH0KICB2YXJpYW5jZSA6PSAwOwoKICBmb3IgaSA6PSAxIHRvIG4gZG8KICAgIHZhcmlhbmNlIDo9IHZhcmlhbmNlICsgKHNjb3JlW2ldIC0gYXZnKSAqIChzY29yZVtpXSAtIGF2Zyk7CgogIHZhcmlhbmNlIDo9IHZhcmlhbmNlIC8gbjsKICBzdGRkZXYgOj0gc3FydCh2YXJpYW5jZSk7CgogIHsg44K944O844OIIH0KICBmb3IgaSA6PSAxIHRvIG4gLSAxIGRvCiAgICBmb3IgaiA6PSAxIHRvIG4gLSBpIGRvCiAgICAgIGlmIHNvcnRlZFtqXSA+IHNvcnRlZFtqICsgMV0gdGhlbgogICAgICBiZWdpbgogICAgICAgIHRlbXAgOj0gc29ydGVkW2pdOwogICAgICAgIHNvcnRlZFtqXSA6PSBzb3J0ZWRbaiArIDFdOwogICAgICAgIHNvcnRlZFtqICsgMV0gOj0gdGVtcDsKICAgICAgZW5kOwoKICB7IOS4reWkruWApCB9CiAgaWYgbiBtb2QgMiA9IDEgdGhlbgogICAgbWVkaWFuIDo9IHNvcnRlZFsobiArIDEpIGRpdiAyXQogIGVsc2UKICAgIG1lZGlhbiA6PSAoc29ydGVkW24gZGl2IDJdICsgc29ydGVkW24gZGl2IDIgKyAxXSkgLyAyOwoKICB7IOe1kOaenOihqOekuiB9CiAgd3JpdGVsbjsKICB3cml0ZWxuKCflubPlnYcgPSAnLCBhdmc6MDoyKTsKICB3cml0ZWxuKCfkuK3lpK7lgKQgPSAnLCBtZWRpYW46MDoyKTsKICB3cml0ZWxuKCfmnIDpq5jngrkgPSAnLCBtYXhTY29yZTowOjIpOwogIHdyaXRlbG4oJ+acgOS9jueCuSA9ICcsIG1pblNjb3JlOjA6Mik7CiAgd3JpdGVsbign5qiZ5rqW5YGP5beuID0gJywgc3RkZGV2OjA6Mik7CiAgd3JpdGVsbign5ZCI5qC86ICF5pWwID0gJywgcGFzc0NvdW50KTsKCiAgd3JpdGVsbjsKICB3cml0ZWxuKCflgY/lt67lgKQnKTsKCiAgZm9yIGkgOj0gMSB0byBuIGRvCiAgYmVnaW4KICAgIGlmIHN0ZGRldiA9IDAgdGhlbgogICAgICBoZW5zYWNoaSA6PSA1MAogICAgZWxzZQogICAgICBoZW5zYWNoaSA6PSA1MCArIDEwICogKHNjb3JlW2ldIC0gYXZnKSAvIHN0ZGRldjsKCiAgICB3cml0ZWxuKCflrabnlJ8nLCBpLCAnIDogJywgaGVuc2FjaGk6MDoyKTsKICBlbmQ7CmVuZC4=