我的简单类函数中的意外输出。为什么?

时间:2014-11-24 05:42:54

标签: c++ class

这是我正在尝试的任务:

定义一个PayRoll类,其中包含员工每小时工资率(一个整数,代表美分)和工作小时数(也是整数)的数据成员。该类提供了两个成员函数setRate和setHours,它们将参数的值赋给相应的数据成员。该类提供了第三个成员函数getPay,它返回每周总工资(以美分计),计算方法如下:前35小时的小时数费率加上35小时内任何小时的一小时费率的小时数。

预期输出:

With•rate•set•to•150•and•hours•set•to•20•getPay•returns•3000
With•rate•set•to•230•and•hours•set•to•15•getPay•returns•3450
With•rate•set•to•975•and•hours•set•to•33•getPay•returns•32175
With•rate•set•to•1000•and•hours•set•to•35•getPay•returns•35000
With•rate•set•to•1000•and•hours•set•to•36•getPay•returns•36500
With•rate•set•to•850•and•hours•set•to•40•getPay•returns•36125

实际输出:

With•rate•set•to•150•and•hours•set•to•20•getPay•returns•3000
With•rate•set•to•230•and•hours•set•to•15•getPay•returns•3450
With•rate•set•to•975•and•hours•set•to•33•getPay•returns•32175
With•rate•set•to•1000•and•hours•set•to•35•getPay•returns•35000
With•rate•set•to•1000•and•hours•set•to•36•getPay•returns•54000
With•rate•set•to•850•and•hours•set•to•40•getPay•returns•51000

如您所见,最后两个实际输出与预期输出不同。我不知道为什么。那是我的问题。

我的代码:

class PayRoll
{
private:
    int hourlyPayRate;
    int hoursWorked;
public:
    void setRate (int iRate){
        hourlyPayRate = iRate;
    }
    void setHours (int iHours) {
        hoursWorked = iHours;
    }
    int getPay() {
        if (hoursWorked <= 35)
            return hoursWorked * hourlyPayRate;
        else if (hoursWorked > 35)
            return hoursWorked * hourlyPayRate * 1.5; 
    }
};

1 个答案:

答案 0 :(得分:0)

请试试这个:

int getPay() {
    if (hoursWorked <= 35) 
        return hoursWorked * hourlyPayRate;
    else if (hoursWorked > 35)
        // Hourly rate for the first 35 hours and 1.5 time for 
        // the remaining = (hours -35)
        return (35 * hourlyPayRate ) + ((hoursWorked-35) * (hourlyPayRate * 1.5)); 
}