#P1527. Making the Grade

Making the Grade

题目描述

Chips老师采用了一套便于自动化计算的简单评分方案。你需要编写一个程序,读取学生的考试成绩、加分项和出勤记录,计算最终成绩,并输出班级平均绩点。

评分规则如下:

  1. 所有考试均以$100$分为满分,成绩介于$0$到$100$分之间。
  2. 若考试次数超过$2$次,则剔除每名学生的最低分后再计算平均分。
  3. 计算班级整体平均分($\text{mean}$)和标准差($\text{sd}$)。成绩等级划分标准为:
    • 平均分 ≥ $\text{mean} + \text{sd}$ 为A
    • $\text{mean}$ ≤ 平均分 < $\text{mean} + \text{sd}$ 为B
    • $\text{mean} - \text{sd}$ ≤ 平均分 < $\text{mean}$ 为C
    • 平均分 < $\text{mean} - \text{sd}$ 为D
  4. 每$2$个加分项可将计算后的平均分提高$3$个百分点(例如:$4$或$5$个加分项提高$6$分)。加分调整在确定等级分数线后进行。
  5. 每缺勤$4$次降低一个等级(A→B,B→C,C→D,D→F),缺勤$9$次降低两个等级。全勤学生提升一个等级(最高不超过A)。所有计算结果四舍五入到小数点后一位。

班级平均绩点($\text{avg grd pnt}$)按以下规则计算:A=$4$分,B=$3$分,C=$2$分,D=$1$分,F=$0$分。全班总分除以学生人数(班级人数至少$2$人)。

标准差计算公式为:

$$\text{sd}=\sqrt{\frac{\sum{(x_i-\text{mean})^2}}{n}}$$

若计算的标准差小于$1$,则按$1$处理。

示例

假设班级有$5$名学生,进行$3$次考试。成绩处理过程如下表所示(使用的$\text{mean}=69.0$,$\text{sd}=20.1$):

T1   T2  T3 Bns Abst  Avg     AdjAvg   Grade  AdjGrd
--------------------------------------------------
100 100  80  3   2   100.0    103.0     A       A
 80  80  80  0   5    80.0     80.0     B       C
 60  20  70  5   3    65.0     71.0     B       B
 40  40  40  5   0    40.0     46.0     D       C
100  20  20  1   9    60.0     60.0     C       F

最终班级平均绩点为$2.2$。

输入格式

第一行包含整数$N$($1 \leq N \leq 10$),表示班级数量。每个班级数据的第一行包含两个整数$S$(学生人数,$1 < S < 31$)和$T$(考试次数,$1 < T < 11$)。随后$S$行每行表示一名学生的$T$次考试成绩($0$到$100$的整数)、加分项和缺勤次数。

输出格式

输出共$N+2$行。首行为"MAKING THE GRADE OUTPUT",随后每行输出一个班级的平均绩点(保留$1$位小数),末行为"END OF OUTPUT"。

样例输入

3
3 2
100 50 2 5
60 60 17 1
20 10 0 0
5 5
100 80 90 80 90 0 0
80 80 80 80 80 0 0
50 50 50 50 50 0 0
100 100 20 20 20 0 0
30 30 30 30 30 0 0
10 4
79 56 59 89 4 5
100 89 96 79 6 2
80 80 80 76 1 3
76 76 76 76 5 4
58 78 67 75 4 0
100 96 100 95 1 2
47 49 46 45 0 5
67 98 59 87 5 5
23 45 52 54 2 7
78 75 79 79 3 3

样例输出

MAKING THE GRADE OUTPUT
3.0
3.2
2.4
END OF OUTPUT

来源

Mid-Atlantic 1996