首页 > 解决方案 > 找出有班级、指针和向量的男女学生的百分比

问题描述

string name我已经介绍了一个学生类,其中包含、char gender和的数据成员double 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 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(),然后打印出结果。

标签: c++pointers

解决方案


    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();
    }

推荐阅读