2017-01-31 28 views
-3
#include<iostream> 
#include<string> 
#include<iomanip> 

using namespace std; 

struct EmployeeData 
{ 
    string employeeName; 
    float overtime; 
    float grossPay; 
    float hoursWorked; 
    float hourlyRate; 
    float statetaxOwed; 
    float statetaxRate; 
    float fedtaxOwed; 
    float fedtaxRate; 
    float netPay; 
}; 

EmployeeData employee[4]; //array of 4 employees 


int main() 
{ 
for (int i = 0; i < 4; ++i) 
    { 
    cout << "Please enter the Employee's Name: "; 
    cin >> employee[i].employeeName; 
    cout << "Please enter your hours worked: "; 
    cin >> employee[i].hoursWorked; 
    cout << "Please enter your hourly rate: "; 
    cin >> employee[i].hourlyRate; 
    cout << "Please enter the Federal Tax Rate: "; 
    cin >> employee[i].fedtaxRate; 
    cout << "Please enter the State Tax Rate: "; 
    cin >> employee[i].statetaxRate; 
    } 

for (int i = 0; i < 4; ++i) 
    { 
    calculate_stats(employee[i]); 
    } 

} 

void calculate_stats(EmployeeData& employee) 
{ 
    if (employee[i].hoursWorked>40) { 
     employee[i].hoursWorked = ((employee[i].hoursWorked-40) * (1.5)) + 40; 
    } 
    else { 
     employee[i].hoursWorked = employee[i].hoursWorked; 
    } 
    employee[i].grossPay = employee[i].hoursWorked * employee[i].hourlyRate; 
    employee[i].fedtaxOwed = employee[i].grossPay * (employee[i].fedtaxRate/100); 
    employee[i].statetaxOwed = employee[i].grossPay * (employee[i].statetaxRate/100); 
    employee[i].netPay = (employee[i].grossPay - employee[i].fedtaxOwed- employee[i].statetaxOwed); 

    cout << setprecision(2) << showpoint << fixed; 
    cout << "\nThe employee's name is: " << employee[i].employeeName << endl; 
    cout << "The Gross Pay is: $" << employee[i].grossPay << endl; 
    cout << "The Federal Taxes Owed is: $" << employee[i].fedtaxOwed << endl; 
    cout << "The State Taxes Owed is: $" << employee[i].statetaxOwed << endl; 
    cout << "The Net Pay for the Employee is: $" << employee[i].netPay << endl; 
} 

在線if employee[i].hoursWorked > 40)我收到的錯誤:「ERROR:標識符‘我’是未定義但是我確信在主定義它是適當的組織我的代碼,如果它的?不是,我應該怎麼組織它?我有一種感覺,這與我的代碼是如何組織的有關標識符「i」是不確定的C++

+1

我在其他地方都是本地的,無法在其他功能中訪問 – Shiping

+0

變量爲o在他們定義的範圍內很少可見。 「我」在「main」之外不可見。事實上,它在定義它的'for'循環之外是不可見的。我建議在C++上寫一本好書:你可以在這裏找到一些建議(http://stackoverflow.com/questions/388242/the-definitive-c-book-guide-and-list)。 –

+0

您的'calculate_stats'函數需要_one_員工,而不是數組...從該函數中刪除不必要的(並且不正確的)'[i]' – Chad

回答

0

我定義的是本地的,不能在其他函數中訪問,您可以更改這些代碼,如下所示

void calculate_stats(EmployeeData&); // put this line before main function. 

... 
for (int i = 0; i < 4; ++i) 
{ 
    calculate_stats(employee[i]); 
} 
... 


void calculate_stats(EmployeeData& employee) 
{ 
    if (employee.hoursWorked>40) { 
     employee.hoursWorked = ((employee.hoursWorked-40) * (1.5)) + 40; 
    } 
    else { 
     employee.hoursWorked = employee.hoursWorked; 
    } 
    ... 
+0

之前聲明它,謝謝你的幫助。那意義重大。但是,我有一個新的錯誤,當我解決了這個問題時,它給了我一個新的錯誤(只有當我嘗試運行時纔會出現,否則它不會顯示)......它說錯誤C3861:''calculate_stats' ':標識符未找到。它正在for循環中引用calculate_stats。我希望用它來稱呼虛空,並進行數字處理和打印。 – Elsa

+0

@Elsa我在我的文章中做了一些改變,我測試了它,它工作。忘了提及你需要添加這行「void calculate_stats(EmployeeData *);」之前的主要功能。 – Shiping

+0

@愛爾莎對不起,你可以保留以前的版本,並改變這一行calculate_stats(員工+我); calculate_stats(員工[我]我);並添加這一行「void calculate_stats(EmployeeData&);」之前的主要功能。 – Shiping