ユーザー入力が Float かどうかを検証したいのですが、プログラムは入力が float であるかどうかをチェックし、「Number is fine」と出力します。それ以外の場合は「Number is not fine」と出力し、失敗した試行を考慮せずにループを続行します。ループの代わりに、別の方法で、代わりに浮動小数点数を入力しようとします。
問題は、ユーザーが「文字」を入力すると、プログラムが無限ループになることです。私が実際にやりたいのは、「番号がうまくいきません」と印刷して続行することです。
なぜこれが起こるのか誰にも教えてもらえますか? また、追加のライブラリを使用しないことを検討してください。
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
int x;
float num;
cout << "Please enter the amount of numbers you wish to enter" << endl;
cin >> x;
cout << "Please enter the numbers" << endl;
for(int i=0; i < x;) {
if(!(cin >> num)) {
cout << "Number isn't fine" << endl;
continue;
}
cout << "Number is fine" << endl;
++i;
}
system("pause");
}
@Steveあなたのソリューションは、cin.clear()とcin.ignoreの両方を使用して機能しました
@AndyG ご協力いただきありがとうございますが、残念ながら私は最も簡単な方法に限定されています。
誰かが将来どのように見えるか知りたい場合は、これが最終的なコードです。
#include <iostream>
#include <windows.h>
using namespace std;
int main()
{
int x;
float num;
cout << "Please enter the size of numbers" << endl;
cin >> x;
cout << "Please enter the numbers" << endl;
for(int i=0; i < x;) {
if(!(cin >> num)) {
cin.clear();
cin.ignore();
cout << "not a float number" << endl;
continue;
}
cout << "Number is fine" << endl;
++i;
}
system("pause");
}