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{
|
function computeFinalGrade(reportCard: StudentReportCard): number{
|
||||||
let finalGrade = 0;
|
let finalGrade = 0;
|
||||||
for(let mark of reportCard.marks){
|
for(let mark of reportCard.marks){
|
||||||
finalGrade += (mark.grade / mark.maxGrade) * mark.weight / 100
|
finalGrade += (mark.grade / mark.maxGrade) * mark.weight
|
||||||
}
|
}
|
||||||
return finalGrade;
|
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[]{
|
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