s
This commit is contained in:
1 parent
aedd00ef47
commit
603130b219
1 file changed
+47
-5
+47
-5
@@ -36,21 +36,63 @@ type StudentReportCard = {
|
||||
function computeFinalGrade(reportCard: StudentReportCard): number{
|
||||
let finalGrade = 0;
|
||||
for(let mark of reportCard.marks){
|
||||
finalGrade += (mark.grade / mark.maxGrade) * mark.weight / 100
|
||||
finalGrade += (mark.grade / mark.maxGrade) * mark.weight
|
||||
}
|
||||
return finalGrade;
|
||||
}
|
||||
|
||||
function getGrade(studentId: number, examId: number, grades: Grade[]): number{
|
||||
for(let grade of grades){
|
||||
if(grade.examId === examId && grade.studentId === studentId){
|
||||
return grade.grade;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
function createMarkForExam(studentId: number,
|
||||
exam: Exam,
|
||||
rawData: RawData): Mark{
|
||||
return {
|
||||
grade: getGrade(studentId, exam.examId, rawData.grades),
|
||||
maxGrade: exam.maxGrade,
|
||||
weight: exam.weight
|
||||
};
|
||||
}
|
||||
|
||||
function createMarks(studentId: number, rawData: RawData): Mark[]{
|
||||
let ret: Mark[] = [];
|
||||
for(let exam of rawData.exams){
|
||||
ret.push(createMarkForExam(studentId, exam, rawData))
|
||||
}
|
||||
return ret;
|
||||
|
||||
}
|
||||
function createStudentReportCard(student: Student,
|
||||
rawData: RawData): StudentReportCard{
|
||||
return {
|
||||
studentId: student.studentId,
|
||||
studentName: student.name,
|
||||
marks: createMarks(student.studentId, rawData)
|
||||
}
|
||||
}
|
||||
function transformData(rawData: RawData): StudentReportCard[]{
|
||||
|
||||
let ret: StudentReportCard[] = [];
|
||||
for(let student of rawData.students){
|
||||
ret.push(createStudentReportCard(student, rawData));
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function main(_rawData: RawData): void{
|
||||
|
||||
|
||||
function main(rawData: RawData): void{
|
||||
let reportCards = transformData(rawData);
|
||||
for(let reportCard of reportCards){
|
||||
console.log(reportCard.studentName + " = " + computeFinalGrade(reportCard) )
|
||||
}
|
||||
}
|
||||
|
||||
main(rawData);
|
||||
|
||||
|
||||
Reference in new issue
Block a user