To calculate total in void display, I need the values of part1marks, part2marks and score. Hence I have created return functions (This is how I have to do it as per my assignment). However, I am getting undesirable output as shown below.
#include<iostream>
using namespace std;
class student
{
int rollno;
public:
void getnumber()
{
cout << "Enter roll number: ";
cin >> rollno;
cout << endl;
}
int putnumber()
{
return rollno;
}
};
class test : virtual public student
{
float part1marks;
float part2marks;
public:
void getmarks()
{
cout << "Enter Marks(Parts 1 and 2): ";
cin >> part1marks >> part2marks;
cout << endl;
}
float putmarks()
{
float marks = part1marks + part2marks;
return marks;
}
};
class sports : virtual public student
{
float score;
public:
void getscore()
{
cout << "Enter score: ";
cin >> score;
cout << endl;
}
float putscore()
{
return score;
}
};
class result : public test, public sports
{
float total;
public:
void display()
{
test t;
sports s;
float sc = s.putscore();
float ms = t.putmarks();
total = sc + ms;
cout <<"Total marks= "<< total;
}
};
int main()
{
result obj;
obj.getnumber();
obj.getmarks();
obj.getscore();
obj.display();
system("pause");
return 0;
}
Expected Output
Enter roll number: 21
Enter Marks(Parts 1 and 2): 22.2 22.2
Enter score: 22.2
Total marks= 66.6 Press any key to continue . . .
Actual Output
Enter roll number: 21
Enter Marks(Parts 1 and 2): 22.2 22.2
Enter score: 22.2
Total marks= -3.22123e+08Press any key to continue . . .