sofia_0216 2022-04-25 17:52 采纳率: 100%
浏览 14
已结题

怎么设计一个类内函数,去识别字符并且计数?

题目:声明一个 student 类,私有成员为疫苗的次数,每次疫苗的类型。声明静态成员,记录没打疫苗的和分别打一针、二针、三针的人数,以及各类疫苗的总接种次数。
我的问题:怎么识别我输入的疫苗类型,然后在对应的次数上叠加啊?(完全没有头绪)

  • 写回答

1条回答 默认 最新

  • bostonAlen 2022-04-26 13:04
    关注
    #include <iostream>
    #include <vector>
    using namespace std;
    //疫苗种类
    enum VACCINE_TYPE
    {
        miehuo    = 4,//灭活疫苗
        yadanw     = 5,//亚单位疫苗
        xianbd     = 6,//腺病毒载体疫苗
    };
    
    
    class student
    {
    public:    
        static int people_novaccine;//没打疫苗的人数
        
        static int people_first;    //一针接种人数
        static int people_second;    //二针接种人数
        static int people_third;    //三针接种人数
    
        static int people_miehuo;    //灭活疫苗接种人数
        static int people_yadanw;    //亚单位疫苗接种人数
        static int people_xianbd;    //腺病毒载体疫苗
        static void show()
        {
            cout<<"没打疫苗的人数:"<<people_novaccine<<endl;
            cout<<"一针接种人数:"<<people_first<<endl;
            cout<<"二针接种人数:"<<people_second<<endl;
            cout<<"三针接种人数:"<<people_third<<endl;
            cout<<"灭活疫苗接种人数:"<<people_miehuo<<endl;
            cout<<"亚单位疫苗接种人数:"<<people_yadanw<<endl;
            cout<<"腺病毒载体疫苗:"<<people_xianbd<<endl;
        }
    public:
        student(){vaccine_time=0;}
        student(int vtime,vector<int> _v)
        {
            vaccine_time = vtime;
            
            v.resize(_v.size());
            for(size_t i=0;i<_v.size();i++)
                v[i]=_v[i];
                
            if(vtime == 0) student::people_novaccine++;
            else if(vtime == 1) student::people_first++;
            else if(vtime == 2) {student::people_first++;student::people_second++;}
            else if(vtime == 3) {student::people_first++;student::people_second++;student::people_third++;}
            
            for(size_t i=0;i<_v.size();i++)
            {
                if(v[i] == miehuo)student::people_miehuo++;
                if(v[i] == yadanw)student::people_yadanw++;
                if(v[i] == xianbd)student::people_xianbd++;
            }
        }
    private:
        int vaccine_time;
        vector<int> v;
    };
    int student::people_novaccine = 0;//没打疫苗的人数
    int student::people_first = 0;    //一针接种人数
    int student::people_second = 0;    //二针接种人数
    int student::people_third = 0;    //三针接种人数
    int student::people_miehuo = 0;    //灭活疫苗接种人数
    int student::people_yadanw = 0;    //亚单位疫苗接种人数
    int student::people_xianbd = 0;    //腺病毒载体疫苗接种人数
    
    
    int main() {
        vector<int> v1={};
        
        vector<int> v2;
        v2.resize(1);
        v2[0] = miehuo;
        
        vector<int> v3;
        v3.resize(2);
        v3[0] = miehuo;
        v3[1] = yadanw;
        
        vector<int> v4;
        v4.resize(3);
        v4[0] = miehuo;
        v4[1] = yadanw;
        v4[2] = xianbd;
        
        student s1(3,v4);
        student s2(2,v3);
        student s3(1,v2);
        student s4(0,v1);
        
        student::show();
        return 0;
    }
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月5日
  • 已采纳回答 4月27日
  • 创建了问题 4月25日

悬赏问题

  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料