计算 10 名员工的总工资。 (C++ - 结构中的数组)
Calculate total gross pay of 10 employees. (C++ - Array in Struct)
这道题的结果,应该有一个工资单记录,包含了所有这些东西。
但是我在使用结构 (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;
}
你有一个未初始化的数组
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
,不是吗?
这道题的结果,应该有一个工资单记录,包含了所有这些东西。 但是我在使用结构 (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;
}
你有一个未初始化的数组
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
,不是吗?