Мне дали два класса, Person и Student, где Person - базовый класс, а Student - производный класс. Любые изменения в классе Person или главной функции не допускаются. Обратите внимание, что Student наследует все свойства Person. Конструктор класса Student, имеющий параметры: строка, имя, строка, фамилия, целое число, идентификатор. Целочисленный массив (или вектор) результатов тестов. Метод char calc (), который вычисляет среднее значение объекта Student и возвращает знак оценки класса, представляющий их вычисленное среднее значение. Пример ввода -
Heraldo Memelli 8135627 2 100 80
Ожидаемый вывод -
Name: Memelli, Heraldo ID: 8135627 Grade: O
Ошибка, которую я получаю при объявлении конструктора, не могли бы вы объяснить, почему и есть ли другой подход, который вы бы предложили. Заранее спасибо. Вот мой код -
#include <iostream>
#include <vector>
using namespace std;
class Person {
protected:
string firstName;
string lastName;
int id;
public:
Person(string firstName, string lastName, int identification) {
this - > firstName = firstName;
this - > lastName = lastName;
this - > id = identification;
}
void printPerson() {
cout << "Name: " << lastName << ", " << firstName << "\nID: " << id << "\n";
}
};
class Student: public Person {
private: vector < int > testScores;
public: Student(string firstName, string lastName, int identification, vector < int > & scores) {
for (int i = 0; i < & scores.size(); i++)
this - > testScores.pushback( & scores[i]);
}
char calculate() {
int avg, sum = 0, count = 0;
for (int i = testScores.begin(); i < testScores.size(); i++) {
sum = sum + testScores[i];
count++;
}
avg = sum / count;
if (avg >= 90 && avg <= 100)
return ('O');
else if (avg >= 80 && avg < 90)
return ('E');
else if (avg >= 70 && avg < 80)
return ('A');
else if (avg >= 55 && avg < 70)
return ('P');
else if (avg >= 40 && avg < 55)
return ('D');
else if (avg0 < 40)
return ('T');
}
};
int main() {
string firstName;
string lastName;
int id;
int numScores;
cin >> firstName >> lastName >> id >> numScores;
vector < int > scores;
for (int i = 0; i < numScores; i++) {
int tmpScore;
cin >> tmpScore;
scores.push_back(tmpScore);
}
Student * s = new Student(firstName, lastName, id, scores);
s - > printPerson();
cout << "Grade: " << s - > calculate() << "\n";
return 0;
}