求第3.16题的完整答案,感激不尽

img

代码如下,如有帮助,请帮忙采纳一下,谢谢。

img

代码:

#include <iostream>
#include <string>
using namespace std;
class HeartRates
{
private:
    string mName;
    int mYear,mMon,mDay;
    int mAge;
public:
    HeartRates(string name,int y,int m,int d)
    {
        mName = name;
        mYear = y;
        mMon = m;
        mDay = d;
        mAge = 0;
    }
    void setName(string name){mName = name;}
    void setYear(int y){mYear = y;}
    void setMon(int m){mMon = m;}
    void setDay(int d){mDay = d;}
    string getName(){return mName;}
    int getYear(){return mYear;}
    int getMon(){return mMon;}
    int getDay(){return mDay;}

    int getAge()
    {
        int y,m,d;
        if(mAge == 0)
        {
            cout << "请输入当前的年月日,用空格分割:";
            cin >> y >> m>>d;
            mAge = y - mYear;
            if(m < mMon) mAge-=1;
            else if(m == mMon)
            {
                if(d < mDay) mAge -=1;
            }
        }
        
        return mAge;
    }
    
    int getMaxiumunHeartRate()
    {
        return 220 - getAge();
    }

    void getTargetHeartRate(int &low, int &high)
    {
        low = getMaxiumunHeartRate() * 0.5;
        high = getMaxiumunHeartRate() * 0.85;
    }
};

int main()
{
    string name;
    int y,m,d;
    int low,high;
    cout << "请输入人的姓名,出生年月日:"; 
    cin >> name >> y >> m >> d;
    HeartRates ht(name,y,m,d);
    cout << "姓名:"  << ht.getName() << endl;
    cout << "出生日期:" << ht.getYear() << "-" << ht.getMon() << "-" << ht.getDay()<<endl;
    cout << "年龄:" << ht.getAge() << endl;
    cout << "最大心率:" << ht.getMaxiumunHeartRate()<<endl;
    ht.getTargetHeartRate(low,high);
    cout << "目标心率范围:" << low << "-" << high<<endl;
    return 0;
}