Review JavaScript Fundamentals by Building a Gradebook App - Step 4

Tell us what’s happening:

the code from freecodecamp is not complete and because of that my code has refused to work.

Your code so far

function getAverage(scores) {
  let sum = 0;

  for (const score of scores) {
    sum += score;
  }

  return sum / scores.length;
}

function getGrade(score) {
  if (score === 100) {
    return "A++";
  } else if (score >= 90) {
    return "A";
  } else if (score >= 80) {
    return "B";
  } else if (score >= 70) {
    return "C";
  } else if (score >= 60) {
    return "D";
  } else {
    return "F";
  }
}

function hasPassingGrade(score) {
  return getGrade(score) !== "F";
}


// User Editable Region

function studentMsg(totalScores, studentScore) {
return ("Class average: "  + getAverage(totalScores) +  " Your grade: "  + getGrade(studentScore) +  " You passed the course.")
}
console.log(studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37));

// User Editable Region


Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36

Challenge Information:

Review JavaScript Fundamentals by Building a Gradebook App - Step 4

what do you think is missing from the code from freeCodeCamp?

2 Likes

Your solution is not correct, so it cannot pass.

1 Like

@vigbokwe75

The student’s grade can be either pass or fail, so instead of having a fixed message like “You passed the course", you should allow the message to dynamically reflect the outcome.

I see you created the hasPassingGrade() function. It would be more flexible if you return a string pass or fail from this function. Then, in your studentMsg() function, you can append the return value of hasPassingGrade() to your console log. This way, you’ll output the appropriate message based on the student’s result.

Alternative solution: you can also have that logic directly in the studentMsg() function without creating the extra function.