我覺得我正在做一些非常愚蠢的事情。我只想讓程序告訴用戶何時輸入非雙精度值,並繼續循環回到輸入值的cin。爲什麼這會導致與chars無限循環但不能雙打?
我希望用戶輸入任何數字。那麼重要的是做這個微不足道的數學和重複。它在這方面的工作很好,當像char這樣的意外輸入被輸入時,問題就來了。然後,輸入以某種方式將它發送到一個循環,在循環中循環數學問題,而不是僅僅告訴用戶他們必須鍵入一個數字並循環回到cin類型的新數字。
#include <iostream>
#include <cstdlib>
using std::cout; using std::cin; using std::endl;
long double domath(long double i)
{
cout << i << "/" << 2 << "=" << i/2 << endl;
cout << i/2 << "*" << 10 << "=" << (i/2)*10 << endl << endl;
cout << 5 << "*" << i << "=" << 5*i << "\n\n";
return 0;
}
int main()
{
long double in = 0;
while(true)
{
cin >> in;
if (cin.fail()) {
in = char(int(in));
}
domath(in);
}
system("pause>nul");
return 0;
}
請提供樣本輸入,預期和實際輸出。 –
請刪除[tag:c]標籤。 –
您需要清除cin,http://stackoverflow.com/questions/17928865/correct-way-to-use-cin-fail –