我寫了下面的代碼:
#include <iostream>
using namespace std;
void search(int pre, int a, int b, int x) {
char c;
cout << "Is the number " << ((x == 2) ? b : a) << endl;
c = cin.get(); ////// this does not block
if (c == 'y') return;
else {
cout << "Is the number " << ((x == 2) ? b : a) << " closer to your number than " << pre;
c = cin.get();
if (c == 'y') {
search(a, a, (a + b)/2, 2);
} //c=='y'
else search(a, (a + b)/2, b, 1);
}
}
int main() {
int N;
cout << "Enter N? ";
cin >> N;
search(N, 1, N, 1);
return 0;
}
沒有必要,如果你擔心唐不理解邏輯,因爲我的問題不是關於這個問題的。
在搜索功能中,有兩個cin.get(),我需要用戶輸入一個字符。我的問題是程序只能在第二個cin.get()之後輸入。
例如:
Is the number 7 //program doesn't wait after this
Is the number 7 closer to your number than 8 //program blocks here for an input
它爲什麼這樣做呢?
的問題是在你沒有顯示的代碼。寫一個簡單的程序,只是**調用這個函數。它會工作得很好。然後開始改變那個簡單的程序,加入你當前程序現在所做的事情,直到問題再次出現。然後想想你改變了什麼。 –
這是一個常見的「問題」,在這個網站上搜索「cin get flush」... – Nim
問題是在'cin >>'後面缺少一些東西。嘗試調用兩次函數,第一次'get'應該第二次正常工作。 – chris