Я быстро просмотрел ваш код и думаю, что вы имеете в виду, что 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";
}
}