передача параметров — как записать несколько записей и продолжить подсчет в переполнении стека


Обратите внимание: мне рекомендуется использовать массивы, функции, передачу параметров для достижения моей цели.

Еще один студент-калькулятор, нуждающийся в помощи … Сколько из них вы все видели? Если серьезно, мне нужно использовать функции и передачу параметров для создания 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, валовая оплата, задолженность по федеральным налогам, задолженность по государственным налогам, чистая оплата

Печать: Общая валовая заработная плата, Общая сумма федеральных налогов, подлежащих уплате государственных пошлин, Общая сумма чистой заработной платы [ЭТО ПО ВСЕМ ЧЕТЫРЕМ СОТРУДНИКАМ]

Печать: рассчитанная общая сумма оплаты сверхурочных и количество сотрудников, работающих сверхурочно

-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]);
}
//...
}

Это в основном скелет. Вы можете выбрать части, которые, как вы говорите, вы можете использовать, если они есть.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]