숫자가 정수인지 아닌지 식별하려고합니다. 나는이 프로그램을 실행할 때루프에 대해 약간의 오류가 있습니다.
, 나는 그것을 보여주고, 같은 5.5 숫자를 입력합니다. "int로하지 않습니다 5.5을 다시 시도하십시오". 그런 다음 'a'와 같은 문자를 입력하면 "5.5 is int가 아닙니다. 다시 시도하십시오 :"라고 표시됩니다. 문자 'a'는 정수가 아닌 문자이며, 두 번째 경우로 가야하고 "No letter please"를 표시해야한다고 생각하지만 그렇지 않습니다.
처음에 'D'와 같은 문자를 입력하면 프로그램에서 '문자 없음'을 무제한 실행합니다. 나는 "편지를 써주세요"라고 표시하고 싶지만 단 한번만,이 루프에 다른 번호를 입력 할 수 있습니다.
어떻게 이러한 오류를 해결할 수 있습니까?
while (true) {
while ((num) != static_cast<int>(num)) {
cout << "\t" << num << " is not int. Please try again: ";
cin >> num;
cin.clear();
cin.ignore(80, '\n');
}
while (!(cin >> num)) {
cout << "\tNo letter please: ";
cin >> num;
cin.clear();
cin.ignore(80, '\n');
}
cout << "Good! " << num << " is an int!\n\n";
}
오 마이 .. 아무리 무기한으로 달릴지라도. 'while (true)'및 절판 방법이 없습니다. – Gavin
[debugger] (https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)로이를 수정합니다. 코드, 변수를 살펴보면 다했을 때 모든 것이 어떻게 작동하는지 알 수 있습니다. – UKMonkey
글쎄, 현재 어떻게 실행되는지 설명했지만, 어떻게 실행하고 싶은지에 대해서는 설명하지 않았다. 질문을 수정하고 제작하려는 행동을 명확하게 알려주십시오. – Alyoshak