[課業] C++只能輸入正整數的方法 ( 僅供參考 )
剛有人問我輸入小數等錯誤的情況
之前講的cin.fail()只能判斷部份情況
cin把float丟給int的時候會捨去小數 而且cin.fail()查不到 丟了之後就死無對証了
所以解決方法之一是先用float存 然後判斷 f-(int)f==0 true 的話就是整數
這個可以寫成一個函數
寫成函數
把原來的 cin>>a; 改成 a=input_unsigned_int(); 這樣就不會出錯了
這個僅供參考 老師驗程式的時候先驗程式有沒有正常跑 輸入錯誤的情況有判斷只當加分
int input_unsigned_int(){
float tmp;
int a;
bool err;
char trush[1024];
do{
err=false;
cin>>tmp;
if(cin.fail())
{
cin.clear();
cin>>trush;
err=true;
cout<<"輸入了非數字\n請重新輸入一個正整數";
}
else if(tmp-(int)tmp!=0)
{
err=true;
cout<<"輸入了小數\n請重新輸入一個正整數";
}
else if(tmp<0)
{
err=true;
cout<<"輸入負數\n請重新輸入一個正整數";
}
} while(err);
a=(int)tmp;
return a;
}
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.178.168
※ 編輯: yantchen 來自: 118.169.178.168 (01/11 02:17)
推
01/11 14:36, , 1F
01/11 14:36, 1F