2014-11-24 61 views
0

這是我想要做的分配:我的簡單類功能中的意外輸出。爲什麼?

定義有數據成員的僱員的每小時工資率(整數,代表美分)和小時數工資類工作(也整數)。該類提供了兩個成員函數setRate和setHours,它們將參數值分配給適當的數據成員。該班級提供第三個成員函數getPay,返回每週總工資(以美分計算),計算方法如下:前35小時加小時乘以費率,乘以35小時乘以1.5小時。

期望輸出:

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 

正如你可以看到,近兩年實際產出是不一樣的預期歐tputs。我不知道爲什麼。這是我的問題。

我的代碼:

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

仔細閱讀委派描述! – kec 2014-11-24 05:46:48

+0

這不是一個編程問題,你應該花更多的時間來試圖瞭解你需要做什麼,而不是四處奔波,試圖在互聯網上得到一個快速的答案。 – 2014-11-24 05:52:50

+0

@iMoses我真誠地花了兩個多小時在這個目前爲止。 :( – Learner 2014-11-24 05:58:10

回答

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)); 
} 
相關問題