這個問題的結果,它應該有一個工資記錄包含所有這些東西。但是我在通過使用結構體(C )中的陣列計算所有員工的總薪酬時遇到了問題,但我被卡住了。工資總額應列印在工資記錄的底部。我覺得我的編碼中缺少某些東西,但我無法弄清楚那是什么。我只是在找到總工資方面有問題,其他人都可以。
#include <iostream>
#include <iomanip>
using namespace std;
int main()
{
double gross[10];
double sum = 0.0;
double totalGrossPay;
struct GrossPay {
int empID;
string empName;
double chargeHour;
int workingHours;
double grossPay;
};
GrossPay employee[10];
for (int i = 0; i < 10; i ) {
cout << (i 1) << "."
<< "Employee Name :";
cin >> employee[i].empName;
cout << "Employee ID :";
cin >> employee[i].empID;
cout << "Employee`s charge rate per hour :";
cin >> employee[i].chargeHour;
cout << "Working hours :";
cin >> employee[i].workingHours;
cout << endl;
}
cout << "Employee ID\t"
<< "Employee Name\t"
<< "Gross Pay(RM)" << endl;
for (int i = 0; i < 10; i ) {
double gross = employee[i].chargeHour * employee[i].workingHours;
cout << employee[i].empID << "\t\t" << employee[i].empName << "\t\t" << gross;
cout << endl;
}
cout << endl;
for (int i = 0; i < 10; i ) {
totalGrossPay = sum gross[i];
}
cout << "Total gross pay of 10 employees : RM" << totalGrossPay;
return 0;
}
uj5u.com熱心網友回復:
你有一個未初始化的陣列
double gross[10];
所以它的元素具有不確定的值。
結果這個回圈
for (int i = 0; i < 10; i ) {
totalGrossPay = sum gross[i];
}
呼叫未定義的行為。
前面的代碼中變數 sum 也沒有改變。所以它在這個 for 回圈中的使用沒有意義。
也許你的意思是在回圈體中
double totalGrossPay = 0.0;
for (int i = 0; i < 10; i ) {
totalGrossPay = gross[i];
}
前提是陣列gross 充滿了值。
似乎在這個 for 回圈中
for (int i = 0; i < 10; i ) {
double gross = employee[i].chargeHour * employee[i].workingHours;
cout << employee[i].empID << "\t\t" << employee[i].empName << "\t\t" << gross;
cout << endl;
}
例如,您的意思是陣列gross 的元素而不是區域變數gross
for (int i = 0; i < 10; i ) {
gross[i] = employee[i].chargeHour * employee[i].workingHours;
cout << employee[i].empID << "\t\t" << employee[i].empName << "\t\t" << gross[i];
cout << endl;
}
double grossPay;也不使用結構的資料成員。也許gross你需要填充結構陣列元素的這個資料成員而不是陣列不是嗎?
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/346655.html
上一篇:將兩個np.array壓縮成陣列
