maymunskoa

03. School Register (Objects and Classes)

Mar 4th, 2020
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function solve(input){
  2.  
  3.     class Student{
  4.         constructor(name, grade, score){
  5.             this.name = name;
  6.             this.grade = grade;
  7.             this.score = score;
  8.         }
  9.  
  10.         nextGrade(){
  11.             this.grade += 1;
  12.         }
  13. }
  14.  
  15. class schoolClass{
  16.     constructor(grade){
  17.         this.grade = grade;
  18.         this.students = [];
  19.         this.grades = [];
  20.     }
  21.  
  22.     addStudent(name, grades){
  23.         this.students.push(name);
  24.         this.grades.push(grades);
  25.     }
  26.     listOfStudents(){
  27.         return this.students.join(', ');
  28.     }
  29.  
  30.     averageScore(){
  31.         if(this.grades.length > 0){
  32.             let divident = this.grades.reduce((a,b)=>{
  33.                 return a+b;
  34.             });
  35.             let divisor = this.grades.length;
  36.             let average = divident / divisor
  37.             return average.toFixed(2);
  38.         }
  39.     }
  40. }
  41.  
  42. let register = [];
  43. let classes = [];
  44.     for (const record of input) {
  45.         let [first, second, third] = record.split(', ');
  46.         let name = first.split(': ')[1];
  47.         let grade = Number(second.split(': ')[1]);
  48.         let score = Number(third.split(': ')[1]);
  49.         let student = new Student(name, grade, score);
  50.         if( student.score>=3 ){
  51.             student.nextGrade();
  52.         }
  53.         register.push(student);
  54.         classes.push(student.grade);
  55.     }
  56.    
  57.  
  58.     let classList = new Set(classes);
  59.     let listOfClasses = [];
  60.     for (const singleClass of Array.from(classList)) {
  61.         let newClass = new schoolClass(singleClass);
  62.             listOfClasses.push(newClass);
  63.     }
  64. listOfClasses.sort((a,b)=>{
  65.     return a.grade - b.grade;
  66. })
  67.  
  68. for (const one of listOfClasses) {
  69.     for (const student of register) {
  70.         if(one.grade === student.grade){
  71.             if(student.score >= 3){
  72.                 one.addStudent(student.name,student.score);
  73.             }
  74.            
  75.         }
  76.     }
  77. }
  78.  
  79.  
  80.     for (const single of listOfClasses) {
  81.         if(single.students.length > 0){
  82.             console.log(`${single.grade} Grade`);
  83.             console.log(`List of students: ${single.listOfStudents()}`);
  84.             console.log(`Average annual grade from last year: ${Number(single.averageScore()).toFixed(2)}`);
  85.             console.log('');
  86.         }
  87.        
  88.     }
  89.  
  90.  
  91. }
Advertisement
Add Comment
Please, Sign In to add comment