Как я могу получить дополнительное значение для печати в определенное время в цикле for - PullRequest
0 голосов
/ 17 июня 2020

Мне сложно понять, как добавить дополнительное место для печати значения после определенной итерации в for l oop. Программа, которую я делаю, представляет собой простой калькулятор заработной платы сотрудников для практики. Я использую для l oop, чтобы собирать ежедневные данные в течение нескольких часов, и делаю вычисления во вложенном для l oop. Когда я пытаюсь распечатать итоговую сумму за неделю (или сколько дней) для конкретного сотрудника, переменная не очищается. Так что я в основном получаю общую сумму, а не общую сумму, напечатанную в конце этого сотрудника.

Выходные данные сейчас выглядят так, как показано ниже, и код ниже.

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Employee Wage Tracker

Enter the Number of Employees: 3
Enter the Number of Days Worked: 3

Enter the hourly rate for employee(1): $10

Enter the hours worked for each of the following days
EmployeeNumber(1)/DayNumber(1)-Hours Worked: 10
EmployeeNumber(1)/DayNumber(2)-Hours Worked: 10
EmployeeNumber(1)/DayNumber(3)-Hours Worked: 10
Grand Total: $300

Enter the hourly rate for employee(2): $20

Enter the hours worked for each of the following days
EmployeeNumber(2)/DayNumber(1)-Hours Worked: 10
EmployeeNumber(2)/DayNumber(2)-Hours Worked: 10
EmployeeNumber(2)/DayNumber(3)-Hours Worked: 10
Grand Total: $900

Enter the hourly rate for employee(3): $15

Enter the hours worked for each of the following days
EmployeeNumber(3)/DayNumber(1)-Hours Worked: 10
EmployeeNumber(3)/DayNumber(2)-Hours Worked: 10
EmployeeNumber(3)/DayNumber(3)-Hours Worked: 10
Grand Total: $1350
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Я хочу распечатать общую заработную плату каждого сотрудника отдельно, не добавляя каждого сотрудника в общую сумму. Я хочу назвать это примерно так: «Итого за неделю по сотрудникам».

//Employee Wage Tracker
#include <iostream>


// Variables

int counterEmployee = 0;
int counterDays = 0; 

int getValueFromUserPart1() {

    //Collect users initial input for number of employees and amount of days worked
    std::cout << "Employee Wage Tracker";
    std::cout << "\n\nEnter the Number of Employees: ";
    int employeeTotal = 0;
    std::cin >> employeeTotal;

    //catch user if zero or negative employees entered
    while (employeeTotal <= 0) {
        std::cout << "Please Enter a Positive Amount of Employees: ";
        std::cin >> employeeTotal;

        return employeeTotal;
    }
    return employeeTotal;
}

int getValueFromUserPart2() {

    std::cout << "Enter the Number of Days Worked: ";
    int daysWorked = 0;
    std::cin >> daysWorked;

    //catch user if zero or negative days worked entered
    while (daysWorked <= 0) {
        std::cout << "\nPlease Enter a Positive Number for Days: ";
        std::cin >> daysWorked;

        return daysWorked;
    }
    return daysWorked;
}
double ratesForWages() {

    //employee wage information
    std::cout << "\nEnter the hourly rate for employee(" << counterEmployee + 1 << "): $";

    double wageRate; //hold wage rate for this employee
    std::cin >> wageRate; //hold wage rate for this employee


    //catch user to make sure wage rate is positive
    while (wageRate < 0) {
        std::cout << "Please Enter a Positive Wage for Employee(" << counterEmployee + 1 << "): $";
        std::cin >> wageRate;

        return wageRate;
    }
    return wageRate;
}


int main() {

    int employeeTotal{ getValueFromUserPart1() };
    int daysWorked{ getValueFromUserPart2() };

    double grandTotal{};

    //Loop to count the number of employees and loop to count days worked
    for (counterEmployee = 0; counterEmployee < employeeTotal; ++counterEmployee) {

        double wageRate{ ratesForWages() };

        std::cout << "\nEnter the hours worked for each of the following days\n";

        for (int counterDays = 0; counterDays < daysWorked; ++counterDays) {

            //variables for day loops
            double hours{};  //holds hours worked for that day
            double dailyTotal{}; //holds daily total earnings

            std::cout << "EmployeeNumber(" << counterEmployee + 1 << ")/";
            std::cout << "DayNumber(" << counterDays + 1 << ")-" << "Hours Worked: ";
            std::cin >> hours;

            //catch user to make sure hours worked is not negative
            while (hours < 0) {
                std::cout << "Please Enter a Positive Amount of Hours: ";
                std::cin >> hours;
            }
                //calculate daily total earnings and add it to the overall total
                dailyTotal = hours * wageRate;
                grandTotal += dailyTotal;

        } 


        //std::cout << "Current Total for Employee: " << "$" << currentTotal << "\n";
        std::cout << "Grand Total: " << "$" << grandTotal << "\n";

    }
}

1 Ответ

0 голосов
/ 17 июня 2020

Я быстро просмотрел ваш код и думаю, что вы имеете в виду, что grandTotal не должно содержать часов других сотрудников. Для этого все, что вам нужно сделать, это убедиться, что значение будет сбрасываться после каждой итерации. В этом случае было достаточно переместить объявление внутри for -l oop.

Кроме того, я удалил комментарии к некоторым возвратам, так как вы, вероятно, не хотите их получать, и предложил новые имена для ваших функций, так что они немного более самодокументируются, и вы можете легко их понять, не запоминая, что они делают.

Как упоминал Programmer Dude; C ++ - это объектно-ориентированный язык программирования. То, как вы его используете, является скорее императивным подходом, но я думаю, вы просто знакомитесь с синтаксисом C ++, прежде чем погрузиться в классы.

Код:

//Employee Wage Tracker
#include <iostream>


// Variables

int counterEmployee = 0;
int counterDays = 0;

int getEmployeeNumber() {

    //Collect users initial input for number of employees and amount of days worked
    std::cout << "Employee Wage Tracker";
    std::cout << "\n\nEnter the Number of Employees: ";
    int employeeTotal = 0;
    std::cin >> employeeTotal;

    //catch user if zero or negative employees entered
    while (employeeTotal <= 0) {
        std::cout << "Please Enter a Positive Amount of Employees: ";
        std::cin >> employeeTotal;

        // return employeeTotal; don't return because you're not sure the input is correct yet!
    }
    return employeeTotal;
}

int getWorkDaysNumber() {

    std::cout << "Enter the Number of Days Worked: ";
    int daysWorked = 0;
    std::cin >> daysWorked;

    //catch user if zero or negative days worked entered
    while (daysWorked <= 0) {
        std::cout << "\nPlease Enter a Positive Number for Days: ";
        std::cin >> daysWorked;

        // return daysWorked;
    }
    return daysWorked;
}
double getHourlyRateNumber() {

    //employee wage information
    std::cout << "\nEnter the hourly rate for employee(" << counterEmployee + 1 << "): $";

    double wageRate; //hold wage rate for this employee
    std::cin >> wageRate; //hold wage rate for this employee


    //catch user to make sure wage rate is positive
    while (wageRate < 0) {
        std::cout << "Please Enter a Positive Wage for Employee(" << counterEmployee + 1 << "): $";
        std::cin >> wageRate;

        // return wageRate;
    }
    return wageRate;
}


int main() {

    int employeeTotal{ getEmployeeNumber() };
    int daysWorked{ getWorkDaysNumber() };


    //Loop to count the number of employees and loop to count days worked
    for (counterEmployee = 0; counterEmployee < employeeTotal; ++counterEmployee) {

        double grandTotal{};
        double wageRate{ getHourlyRateNumber() };

        std::cout << "\nEnter the hours worked for each of the following days\n";

        for (int counterDays = 0; counterDays < daysWorked; ++counterDays) {

            //variables for day loops
            double hours{};  //holds hours worked for that day
            double dailyTotal{}; //holds daily total earnings

            std::cout << "EmployeeNumber(" << counterEmployee + 1 << ")/";
            std::cout << "DayNumber(" << counterDays + 1 << ")-" << "Hours Worked: ";
            std::cin >> hours;

            //catch user to make sure hours worked is not negative
            while (hours < 0) {
                std::cout << "Please Enter a Positive Amount of Hours: ";
                std::cin >> hours;
            }
            //calculate daily total earnings and add it to the overall total
            dailyTotal = hours * wageRate;
            grandTotal += dailyTotal;

        }


        //std::cout << "Current Total for Employee: " << "$" << currentTotal << "\n";
        std::cout << "Grand Total: " << "$" << grandTotal << "\n";

    }
}
...