#include #include // dieser code geht davon aus, dass der User stets wahrheitsgemäß antwortet! // -> ich fange es nicht ab, wenn der User lügt! int get_response() { std::string eingabe; std::getline(std::cin, eingabe); return eingabe == "ja"; } int get_untere_schranke(int *obere_schranke, int *untere_schranke) { std::cout << "Ist die Zahl kleiner als " << *untere_schranke << " ?" << std::endl; if (get_response()) { *obere_schranke = *untere_schranke; *untere_schranke -= 10; get_untere_schranke(obere_schranke, untere_schranke); } return 0; } int get_obere_schranke(int *obere_schranke, int* untere_schranke) { std::cout << "Ist die Zahl größer als " << *obere_schranke << " ?" << std::endl; if (get_response()) { *untere_schranke = *obere_schranke; *obere_schranke += 10; get_obere_schranke(obere_schranke, untere_schranke); } return 0; } void lets_guess(int guess, int *untere_schranke, int *obere_schranke) { std::cout << "Ist es die " << guess << " ?" << std::endl; if (get_response()) return; std::cout << "Ist die Zahl größer als " << guess << " ?" << std::endl; if (get_response()) { *untere_schranke = guess; } else { *obere_schranke = guess; } if ((*untere_schranke - *obere_schranke == 1) || (*untere_schranke - *obere_schranke == -1)) { std::cout << "Ist es die " << guess-1 << " ?" << std::endl; if (get_response()) return; } lets_guess((*untere_schranke + *obere_schranke) / 2, untere_schranke, obere_schranke); return; } int main() { std::cout << "Ich möchte eine Zahl von dir erraten! \n \ Bitte beantworte meine Fragen wahrheitsgemäß mit \"ja\" oder \"nein\"." << std::endl; int untere_schranke = 0; int obere_schranke = 10; get_untere_schranke(&obere_schranke, &untere_schranke); get_obere_schranke(&obere_schranke, &untere_schranke); lets_guess((untere_schranke + obere_schranke) / 2, &untere_schranke, &obere_schranke); std::cout << "Vielen Dank fürs Spielen!" << std::endl; return 0; }