직원 수를 소수점 이하로 입력하면 "최소한 1의 값을 입력하십시오"라는 결과가 무한 수 반복됩니다. 그러나 십진수는 잘리지 않아야합니까? 어떻게하면 10 진수가 지워지므로이 문제를 해결할 수 있습니다. 이것은 daysMissed의 입력에 대해서도 발생합니다.C++ 함수 while 루프
cin.clear();
가 실패 플래그를 재설정 :
#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;
while(employeeNum < 1)
{
cout << "Please enter a value of atleast 1 " << 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;
while(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;
}
문제가되는 문자 나 줄도 제거 할 수 있습니다. – chris
@chris 꽤 사실! 무시 잊어 버렸습니다. – Serdalis
그것은 "그러나 십진수는 잘리지 않아야합니까?"라는 질문에 답합니다. – 4pie0