Review JavaScript Fundamentals by Building a Gradebook App - Step 4

Tell us what’s happening:

In my code, the getAverage is only spitting out the average of the number “37”, which is correct. But if I change the number to anything else the code is not working as it should. I am unable to see the issue with my code, could you please help and point to my error.

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) {

if(hasPassingGrade(studentScore)){
  return "Class Average: "+ getAverage(totalScores) + ". Your Grade: " + getGrade(studentScore) + ". You Passed the course.";
  }
  else{
    return "Class Average: " + getAverage(totalScores) + ". Your Grade: " + getGrade(studentScore) + ". You failed 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/124.0.0.0 Safari/537.36 Edg/124.0.0.0

Challenge Information:

Review JavaScript Fundamentals by Building a Gradebook App - Step 4

check your casing, the requested string has different casing.

same here

and here

1 Like

Also Give a space before +

1 Like

Hi NoMoney03,
To fix this, you should use the totalScores array to calculate the class average

function studentMsg(totalScores, studentScore) {
if (hasPassingGrade(studentScore)) {
return "Class Average: " + getAverage(totalScores) + ". Your Grade: " + getGrade(studentScore) + “. You Passed the course.”;
} else {
return "Class Average: " + getAverage(totalScores) + ". Your Grade: " + getGrade(studentScore) + “. You failed the course.”;
}
}

Isn’t that what I am using already?

post your updated code.

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";
}

function studentMsg(totalScores, studentScore) {

if(hasPassingGrade(studentScore)){
  return "Class average: " + getAverage(totalScores) + ". Your grade: " + getGrade(studentScore) + ". You passed the course.";
  }
  else{
    return "Class average: " + getAverage(totalScores) + ". Your grade: " + getGrade(studentScore) + ". You failed the course.";
  }
}

console.log(studentMsg([92, 88, 12, 77, 57, 100, 67, 38, 97, 89], 37));

what issue are you having with this code?

Your code passes on my end.
Please let us know what issues you are having so we can help you

When I change the 37 to any other number (say 100), the average does not change. Whereas one of the conditions of the course was

Your function call of

studentMsg([56, 23, 89, 42, 75, 11, 68, 34, 91, 19], 100)

should return the following message:

"Class average: 50.8. Your grade: A++. You passed the course."

.

So, even though my code passed, why did the average remain 71.7 even if I change the number (37) to 100?

The average is calculated by these list of numbers here.
These are the scores

so if you want to see a change in the average, then you will need to make changes to the numbers in that list.

that represents the student’s score.
so changing that doesn’t affect the class average.

hope that helps

1 Like

the 37 is not part of the numbers used to calculate the average. Those are in the array.

This topic was automatically closed 182 days after the last reply. New replies are no longer allowed.