/* FILE: guess.cpp last change: 12-Mar-2001 * L'utente sceglie un numero n con 0 < n < 1024. * Il programma scoprira` il numero nel minor tempo possibile. * Si assume che il giocatore sia onesto! */ #include main() { int max = 1024; int min = 0; // Il primo tentativo e` a meta` dell'intervallo, e quindi: // min + (max - min) / 2 --> (max + min) / 2 int tentativo = (max + min) / 2; char c; do { cout << "Ecco il mio tentativo: " << tentativo << endl; cout << "Il tuo numero e` piu` (a)lto, piu` (b)asso, o (g)iusto? "; cin >> c; switch (c) { case 'b': case 'B': // Il numero da scoprire e` piu` basso: il nuovo massimo e` il vecchio // tentativo e il nuovo tentativo e` a meta` del nuovo intervallo: max = tentativo; tentativo = (max + min) / 2; break; case 'a': case 'A': // Il numero da scoprire e` piu` alto: il nuovo minimo e` il vecchio // tentativo min = tentativo; tentativo = (max + min) / 2; case 'g': case 'G': // Trovato! break; default: // Per qualunque altro tasto premuto abbiamo un errore! cout << "\a"; cout << "Le risposte possibili sono a, b, g!" << endl; } } while ((c != 'g') && ( c != 'G')); }