Hello please explain why my double get_average_score() doesn't return the desired value and instead return inf. number is a count variable. I probably increment it incorrectly.
#include <iostream>
#include <cmath>
#include <string>
usingnamespace std;
class Quizdata
{
private:
string name;
double total;
int number;
public:
Quizdata(string n){
setName(n);
total=number=0;
}
void setName(string studentName){
name = studentName;
}
string get_name(){
return name;
}
int add_quiz(int, int);
double get_total_score(){
return total;
}
double get_average_score(){
return total/number;
}
};
int Quizdata::add_quiz(int n, int grade)
{
int quizNum = n;
int score = grade;
int number;
while ( n!=0){
cin>> grade;
if (grade>=10 && grade<=100){
total +=grade;
number++;
n--;
}
else
{
cout << "Invalid input, score range is from 10 to 100";
}
}
}
int main()
{
string name;
int quizNum, score, total;
cout << "This program accepts students' name,\n"
<< "number of quizes and their scores.\n"
<< "Quiz scores must be in the range of 10 to 100\n";
cout << "\nWhat is the students name? ";
getline(cin, name);
Quizdata student1(name);
cout << "How many quizes grades would you like to enter? ";
cin >> quizNum;
cout << "Enter " << quizNum << " quize grades: ";
student1.add_quiz(quizNum, score);
cout << "\nStudent's name is: " << student1.get_name() <<endl;
cout << "Student's total is: " << student1.get_total_score()<< endl;
cout << "Student's average score is: " << student1.get_average_score()<< endl;
return 0;
}
And on line 42 it says int number;
You are increasing that local variable, not member variable. Your compiler should issue a warning about variable shadowing.