2017-01-31 17 views
-4

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

Другой ученик калькулятора-калькулятора, нуждающийся в помощи ... Сколько из них вы все видели? Серьезно, мне нужно использовать функции и передачу параметров для создания 4 сотрудников, а затем рассчитать общую валовую оплату, общий федеральный налог, общий государственный налог и общую чистую плату всех четырех сотрудников. До сих пор я мог сделать программу, которая делает это только для одного сотрудника. Мой вопрос касается: как мне расширить этот код для записи 4 записей сотрудников, а затем подсчета вышеупомянутых итогов? Я думал о том, чтобы поместить его внутри цикла, начиная с i < 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 Наименование, количество отработанных часов Почасовая ставка, Fed ставка налога, и Государственная налоговая ставка

Входной сигнал: Служащий 2 Наименование, количество отработанных часов Почасовая ставка, Fed ставка налога, и Государственная налоговая ставка

Вход: Служащий 3 Название, количество отработанных часов Почасовая ставка, Fed ставка налога, и Государственная налоговая ставка

ввода: Служащий 4 Наименование, количество отработанных часов Почасовая ставка, Fed ставка налога, и Государственная налоговая ставка

{CALCULATE}

Print: Служащий 1 Наименование, размер заработной платы, налоги Fed Owed, государственные налоги Owed, нетто Оплатить

Print: Служащий 2 Название, размер заработной платы, налоги Fed Owed, государственные налоги, причитающиеся, нетто Оплата

Печать: Сотрудник 3 Имя, размер заработной платы, налоги Fed задолжал, государственные налоги, причитающиеся, нетто Оплата

Печать: Сотрудник 4 Название, брутто, Fe г Налоги Owed, государственные налоги, причитающиеся, нетто Оплата

Print: Total Gross Pay, Всего федеральных налогов, пеней, Всего государственных налогов Owed, Total Net Pay [ЭТО ЧЕРЕЗ ВСЕ ЧЕТЫРЕ СОТРУДНИКОВ]

печати: Рассчитано Сверхурочные Pay Всего и печати # работников, которые работали сверхурочно

+3

Научитесь использовать массивы/контейнеры и то, что делает ключевое слово 'struct' или' class'. – PaulMcKenzie

+1

И функции. Из описания это назначение является большим по функциям. 'main', вероятно, не удовлетворит маркер. – user4581301

+0

мы еще не используем классы, хотя я знаком с классами из java ... если main не удовлетворяет маркеру, что бы? – user7484153

ответ

0

Во-первых, используйте-структуру для описания одного сотрудника:

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

Это много меня учит. Верьте или нет, я думаю, вы правы. Способ C++ делает это более упорядоченным. – user7484153