C ++ Сверхурочные / Заработная плата / Время с половиной / Двойное время - PullRequest
0 голосов
/ 04 марта 2019

я знаю, что мое утверждение if где-то неверно, но я не знаю где?или, может быть, это просто логическая ошибка?

Через 8 часов отработанные часы будут оплачены в полтора раза.То есть, учитывая заработную плату в час, умножьте на 1,5.Эта заработная плата выплачивается за часы после 8 часов.

Через 10 часов любые отработанные часы будут выплачиваться дважды.То есть, учитывая заработную плату в час, умножьте на 2,0.Эта заработная плата выплачивается за часы после 10 часов.Пожалуйста, покажите: (Пример вывода)

Заработная плата в час: 12,37 Отработанные часы: 10,3

Оплата (от 0 до 8 часов): 98,96

Оплата за часы от 8 до 10): 37,11

Плата за часы (10 и более): 7,42

Общая валовая оплата: 143,49

// Example program
#include <iostream>
#include <string>

using namespace std;

double HoursWorked;
double WagePerHour;
double TotalWages;
double TimeAndHalf;
double Overtime;
char ContinueChar;

//test cases: 10.5 hours @ 12/hour = $96.00, 2 hours at 1.5 rate = $36.00, .5 hour at 2.0 rate = $12.00
// 6.3 hours @ 12/hour = 75.6, no hours of overtime or double time
//12.5 hours @ 14.34/ hour = $114.72, 2 hours at 1.5 rate = 43.02, 2.5 hours at 2.0 rate = $71.70
//3.7 hours @ 19/hour = $70.30
// 14 hours @ 23.50/hour = $188, 2 hours at 1.5 rate = $70.50, 4 hours at 2.0 rate = $188
//I tested with test test cases and the program had the same results.

int main()
{

    cout << "Ticket #64220\n";
    cout << "CMPR-120\n";
    cout << "Instructor : Joel Kirscher\n";
    cout << "Student: Seyed Shariat\n";
    cout << "Payroll Overtime";
    cout << "\n\n";



    do {
        cout << "How many hours did you work this pay period: \n";
        cin >> HoursWorked;
        cout << "What wage do you get paid per hour?: \n";
        cin >> WagePerHour;
        cout << "So you your paycheck will be: " << HoursWorked * WagePerHour << " before taxes are taken out. \n";

        if (HoursWorked > 8 && <= 10)
            cout << "For the hours you worked over 8, and less than or equal to 10 you made: " << HoursWorked * 1.5 * WagePerHour << " \n";
        else (HoursWorked >10);
        cout << "For the hours you worked over 10: " << HoursWorked * 2.0 * WagePerHour << " \n";

        cout << "Do you want this to run again? (y=Yes): ";
        cin >> ContinueChar;
    } while (ContinueChar == 'y' || ContinueChar == 'Y');


    cin.get();

    return 0;
}

1 Ответ

0 голосов
/ 04 марта 2019

Есть много подходов к этому.Вот один.Комментарии могут помочь вам следовать моим рассуждениям.К счастью, математика не очень сложна.

/*
We need to find the area under this pay rate / hours worked graph.
The following approach divides the graph into three rectangles as shown below
2.0 |         +--+
    |         |  |
1.5 |       +-+--|
    |       |    |
1.0 +-------+----|
    |            |
0.5 |            |
    |            |
0.0 +------------+
    0       8 10
*/
// Calculate basic pay before any overtime consideration
Pay = HoursWorked * HourlyRate;

// Hours above 8 earn half-again more than the standard wage.
// (This will be only positive if more than 8 hours were worked.)
OvertimePay = (HoursWorked - 8.0) * HourlyRate * 0.5;
if(OvertimePay > 0.0)
    Pay += OvertimePay;

// Hours above 10 earn an additional 50% extra
// (This will be only positive if more than 10 hours were worked.)
OvertimePay = (HoursWorked - 10.0) * HourlyRate * 0.5;
if(OvertimePay > 0.0)
    Pay += OvertimePay;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...