0

私のプログラムでは、最初に従業員数を尋ねます。if ループは、入力が入力 < 1 の場合、「少なくとも 1 の値を入力してください」と出力することを示しています。0 または -1 を入力すると、ユーザーが修正するように出力されますが、これは 1 回しか行われません。したがって、ユーザーが -1 を 2 回入力すると、2 回目に実行されます。これは、2 番目の if ループでも行われます。

#include <iomanip>
#include <iostream>

using namespace std;

int getNumEmployees();
int getDaysMissed(int);
double getAverageDays(int,int);

int main()
{
    int numEmployees;
    int daysMissed;
    double average;

    //Get the number of employees
    numEmployees = getNumEmployees();

    //Get the number of days missed
    daysMissed = getDaysMissed(numEmployees);

    //Get the average days missed
    average = getAverageDays(numEmployees, daysMissed);

    cout << "The average number of days missed is: " << average << endl;

    system("pause");
    return 0;
}

int getNumEmployees()
{
    int employeeNum;

    cout << "Enter the number of company employees: ";
    cin >> employeeNum;

    if(employeeNum < 1)
    {
        cout << "Please enter a value greater than 0 " << endl;
        cin >> employeeNum;
    }

    return employeeNum;
}


int getDaysMissed(int employeeNum)
{
    int totalDays = 0;
    int employee;

    for(int count = 1; count <= employeeNum; count++)
    {
        cout << "Enter the number of days employee " << count << " missed: ";
        cin >> employee;
        if(employee < 0)
        {
            cout << "Enter a positive number for days missed " <<     endl;
            cin >> employee;
        }

        totalDays += employee;
    }
    return totalDays;
}

double getAverageDays(int employeeNum, int totalDays)
{
    double averageDays;
    averageDays = totalDays / employeeNum;
    return averageDays;
}
4

1 に答える 1

2

これを変える:

if(employeeNum < 1)

これに:

while(employeeNum < 1)

ループしたい。そしてクリスが言及しているように、ifループはしません。

于 2013-03-25T22:02:32.530 に答える