这是我正在尝试的任务:
定义一个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;
}
};
答案 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));
}