Обратите внимание: мне рекомендуется использовать массивы, функции, передачу параметров для достижения моей цели.
Еще один студент-калькулятор, нуждающийся в помощи … Сколько из них вы все видели? Если серьезно, мне нужно использовать функции и передачу параметров для создания 4 сотрудников, а затем рассчитать общую валовую заработную плату, общий федеральный налог, общий налог штата и общую чистую заработную плату всех четырех сотрудников. До сих пор я был в состоянии сделать программу, которая делает это только для одного сотрудника. Мой вопрос касается: как мне расширить этот код для записи 4 записей сотрудников, а затем подсчитать вышеупомянутые итоги? Я думал положить его внутрь цикла, начиная с<4, но я не совсем уверен. Моя самая большая проблема заключается в использовании передачи параметров, потому что я необходимость использовать передачу параметров. Вот код:
#include<iostream>
#include<string>
#include<iomanip>
using namespace std;
string employeeName;
float overtime;
float grossPay;
float hoursWorked;
float hourlyRate;
float statetaxOwed;
float statetaxRate;
float fedtaxOwed;
float fedtaxRate;
float netPay;
int main()
{
cout << "Please enter the Employee's Name: ";
getline(cin, employeeName);
cout << "Please enter your hours worked: ";
cin >> hoursWorked;
cout << "Please enter your hourly rate: ";
cin >> hourlyRate;
cout << "Please enter the Federal Tax Rate: ";
cin >> fedtaxRate;
cout << "Please enter the State Tax Rate: ";
cin >> statetaxRate;
if (hoursWorked>40){
hoursWorked = ((hoursWorked-40) * (1.5)) + 40;
}
else {
hoursWorked=hoursWorked;
}
grossPay = hoursWorked * hourlyRate;
fedtaxOwed = grossPay * (fedtaxRate/100);
statetaxOwed = grossPay * (statetaxRate/100);
netPay = (grossPay-fedtaxOwed- statetaxOwed);
cout << setprecision(2) << showpoint << fixed;
cout << "\nThe employee's name is: " << employeeName << endl;
cout << "The Gross Pay is: $" << grossPay << endl;
cout << "The Federal Taxes Owed is: $" << fedtaxOwed << endl;
cout << "The State Taxes Owed is: $" << statetaxOwed << endl;
cout << "The Net Pay for the Employee is: $" << netPay << endl;
}
В идеале поток будет работать так:
Входные данные: имя сотрудника 1, отработанные часы, почасовая ставка, ставка федерального налога и ставка государственного налога
Входные данные: имя сотрудника 2, отработанные часы, почасовая ставка, ставка федерального налога и ставка государственного налога
Входные данные: имя сотрудника 3, отработанные часы, почасовая ставка, ставка федерального налога и ставка государственного налога
Входные данные: имя сотрудника 4, отработанные часы, почасовая ставка, ставка федерального налога и ставка государственного налога
{C A L C U L A T E}
Печать: Имя сотрудника 1, валовая оплата, задолженность по федеральным налогам, задолженность по государственным налогам, чистая оплата
Печать: Имя сотрудника 2, валовая оплата, задолженность по федеральным налогам, задолженность по государственным налогам, чистая оплата
Печать: Имя сотрудника 3, валовая оплата, задолженность по федеральным налогам, задолженность по государственным налогам, чистая оплата
Печать: Имя сотрудника 4, валовая оплата, задолженность по федеральным налогам, задолженность по государственным налогам, чистая оплата
Печать: Общая валовая заработная плата, Общая сумма федеральных налогов, подлежащих уплате государственных пошлин, Общая сумма чистой заработной платы [ЭТО ПО ВСЕМ ЧЕТЫРЕМ СОТРУДНИКАМ]
Печать: рассчитанная общая сумма оплаты сверхурочных и количество сотрудников, работающих сверхурочно
Во-первых, используйте структуру для описания одного сотрудника:
struct EmployeeData
{
string employeeName;
float overtime;
float grossPay;
float hoursWorked;
float hourlyRate;
float statetaxOwed;
float statetaxRate;
float fedtaxOwed;
float fedtaxRate;
float netPay;
};
Затем используйте массив или другой контейнерный класс, чтобы описать более одного EmployeeData
:
EmployeeData employee[4]; // array of 4 employees
Тогда для доступа к каждому сотруднику это будет:
employee[0] // first employee
employee[1] // second employee
employee[2] // third employee
employee[3] // fourth employee
Запишите число в квадратных скобках. Теперь вы можете перебрать массив сотрудников:
// input the data for the 4 employees
for (int i = 0; i < 4; ++i)
{
cin >> empployee[i].employeeName;
cin >> empployee[i].overtime;
// etc..
}
Чтобы определить функцию:
void calculate_stats(Employee& theEmployee)
{
// theEmployee is the employee passed into the function
//...
}
А затем вызвать функцию:
int main()
{
//...
for (int i = 0; i < 4; ++i)
{
calculate_stats(employee[i]);
}
//...
}
Это в основном скелет. Вы можете выбрать части, которые, как вы говорите, вы можете использовать, если они есть.
Других решений пока нет …