找到有班级、指针和向量的男女学生的百分比



我介绍了一个学生类,其中包含string name,char genderdouble gpa的数据成员。

类是这样的:

class Student {
public:
Student();
Student(string name, char gender, double gpa);
void setName(string name);
void setGender(char gender);
void setGpa(double gpa);
string getName();
char getGender();
double getGpa();
private:
string name;
char gender;
double gpa;
};

我有另一个类部门

class Department {
public:
Department();
Department(string department_name);
void setDepartment(string department_name);
string getDepartment();
void claimMajor(Student*);
void demography_by_gender();
private:
vector<Student*> majors;
string department_name;
};

这是int main

int main(int argc, const char* argv[]) {
Student* mike = new Student("Mike", 'M', 1.9);
Student* alexa = new Student("Alexa", 'F', 2.2);
Student* brook = new Student("Brook", 'F', 3.9);
Student* sam = new Student("Sam", 'F', 2.1);
Student* kevin = new Student("Kevin", 'M', 0.7);
Student* john = new Student("John", 'M', 2.5);
Student* jen = new Student("Jen", 'F', 1.8);
Department* csci = new Department("CSCI");
csci->claimMajor(mike);
csci->claimMajor(alexa);
csci->claimMajor(brook);
csci->claimMajor(sam);
csci->claimMajor(kevin);
csci->claimMajor(john);
csci->claimMajor(jen);
csci->demography_by_gender();
return 0;
}

向量存储所有的学生指针,但我有麻烦弄清楚如何计算男性和女性学生使用demography_by_gender()的百分比,然后打印出结果。

float Department::demography_by_gender(char gender)
{
size_t found = 0;
if (majors->empty()) return 0.f;
else for (auto student: majors) {
if (student->gender == gender) found++;
}
return float(found) / majors->size();
}

最新更新