[課業] C++只能輸入正整數的方法 ( 僅供參考 )

看板NTUE-CS101作者 (球童Yanting)時間17年前 (2009/01/11 01:50), 編輯推噓1(100)
留言1則, 1人參與, 最新討論串1/1
剛有人問我輸入小數等錯誤的情況 之前講的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
文章代碼(AID): #19QD_FfC (NTUE-CS101)