Re: [問題] 老梗的猜數字 (C++)
※ 引述《revivalworld (指考加油Q_Q)》之銘言:
: ※ 引述《eric8347 (殺人電風扇)》之銘言:
: : 雖然這是一個快被討論到爛掉的題目
: : 不過我還是要來問一下XD
: : 主程式部分都已經OK
: : 但是老師和我說要是輸入英文的話
: : 程式就會錯誤
: : 要我回去修改
: : 在參考了精華區裡面的猜數字&cin的特殊用法
: : 修改程式碼後
: : 變成現在可以正確判定是不是正確輸入數字
: : 或者輸入的是英文or英文混雜數字
: : 但是問題來了
: : 確定是數字後
: : 有些數字會無法繼續進行下面的程式碼
: : 讓我非常苦惱
: : 附上cpp檔
: : http://eric8347.googlepages.com/guess.cpp
: : 請求各位大大了...
: if( !cin.good() ) {
: // 清除 cin 的所有 flag, 設立 good bit
: // 記得這個動作要先做,不然只要 cin 處在錯誤狀態,任何操作都是無效的
: cin.clear();
: // 吃掉 input buffer 裡面的所有字元
: cin.ignore( numeric_limits<streamsize>::max(), '\n' );
: }
先說聲 謝謝
感激願意替我看程式碼的大大
我剛剛又重新看了一下原本的程式碼
發現原本的問題應該是
確定是數字後(或者判斷輸入中有出現英文的話)
再輸入一組數字
就可以判定
ex:
1234
1234 ==>1A 1B
or
12a4
1234 ==>1A 1B
這樣子
還有阿
我發現程式一執行如果就輸入英文
他就會出錯
但要是先輸入數字
就沒問題...
天阿到底是怎麼一回事阿...
我把部分的程式碼貼上來好了
其中while(cin >> strtmp)這一段
因為是參考精華區的
看不太懂
我在想會不會是這一段裡面有出錯
cout << "請輸入 4 位數字(0123~9876):"<<endl;
cin >> ans;
while(cin >> strtmp)
{
check = true;
for(int c=0;c < strtmp.size();c++)
{
if(!isdigit(strtmp[c]))
{
check = false;
break;
}
}
if(check)
{
istringstream istr(strtmp);
istr >> ans;
break;
}
else
cout << "你輸入的不是數字喔!" <<endl;
}
if (ans<0123 || ans>9876)
cout << "不合理的範圍。"<<endl;
else
break;
}
問題真的很多
非常不好意思
請見諒...
--
http://eric8347.blogspot.com
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 58.115.22.7
推
04/20 23:09, , 1F
04/20 23:09, 1F
→
04/20 23:09, , 2F
04/20 23:09, 2F
→
04/20 23:33, , 3F
04/20 23:33, 3F
推
04/20 23:34, , 4F
04/20 23:34, 4F
→
04/20 23:33, , 5F
04/20 23:33, 5F
→
04/20 23:35, , 6F
04/20 23:35, 6F
→
04/20 23:36, , 7F
04/20 23:36, 7F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):