50138. Compute Grade

難度:2.5/5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <stdio.h>
#include "computeGrade.h"

#define max(a,b) ((a)>(b)?(a):(b))
#define min(a,b) ((a)<(b)?(a):(b))


// typedef struct{
// int rawScore;
// double scaledScore;
// }Score;
//
// typedef struct{
// char id[10];
// Score score[18];
// double finalScore;
// }Student;
//
// typedef struct{
// int numStudent;
// Student student[1000];
// }Classes;


double get_avg(Classes* c, int idx){
int sum = 0;
for(int i = 0; i < c->numStudent; i++){
Student* s = &c->student[i];
sum += s->score[idx].rawScore;
}
return (double)sum / (double)c->numStudent;
}
void original_score(Classes* c, int idx){
for(int i = 0; i < c->numStudent; i++){
Student* s = &c->student[i];
s->score[idx].scaledScore = (double)s->score[idx].rawScore;
}
}
void scale_score(Classes* c, int idx, double r){
for(int i = 0; i < c->numStudent; i++){
Student* s = &c->student[i];
s->score[idx].scaledScore = (double)s->score[idx].rawScore * (double)r;
if(s->score[idx].scaledScore > (double)100) s->score[idx].scaledScore = (double)100;
}
}

void get_student_final(Student* s){
double sum = 0;
for(int i = 0; i < 18; i++){
sum += s->score[i].scaledScore;
}
s->finalScore = (double)0.06 * sum;
if(s->finalScore > (double)100) s->finalScore = (double)100;
}
void get_class_final(Classes* c){
for(int i = 0; i < c->numStudent; i++){
Student* s = &c->student[i];
get_student_final(s);
}
}

void print_student_final(Student* s){
printf("%s %f\n", s->id, s->finalScore);
}
void print_class_final(Classes* c){
for(int i = 0; i < c->numStudent; i++){
Student* s = &c->student[i];
print_student_final(s);
}
}

void computeGrade(Classes classes[2]){
for(int i = 0; i < 18; i++){
double avg0 = get_avg(&classes[0], i);
double avg1 = get_avg(&classes[1], i);
double r = max(avg0, avg1) / min(avg0, avg1);
if(avg0 > avg1){
original_score(&classes[0], i);
scale_score(&classes[1], i, r);
}
else{
scale_score(&classes[0], i, r);
original_score(&classes[1], i);
}
}
get_class_final(&classes[0]);
get_class_final(&classes[1]);

print_class_final(&classes[0]);
print_class_final(&classes[1]);
}


50138. Compute Grade
https://aaronlin1229.github.io/judgegirl_50138/
Author
Akizumi
Posted on
July 17, 2023
Licensed under