*Program the computer to ask a user to, "think of a three-digit number". Using the response "Y"and "N" to the question, "Is your number bigger than n" (where n is computed by the program), find the user's three-digit number.*

PHP isn't a logical language to use when asking for user input multiple times, so I've written this solution in c++.

`// this handles input and output`

`#include <iostream.h>`

`int main ()`

`{`

` // the guess is the amount the user will be asked`

` // the code can handle any min/max values if they're valid`

` int iGuess, iMin = 111, iMax = 999;`

` // the users response should be 1 if true and 0 if false`

` int iResponse;`

` `

` // tell the user to think of a three digit number`

` cout << "Think of a three digit number.\n" << "...\n";`

` `

` // only loop while the min and max values are different`

` // which means we are still guessing`

` while (iMin!=iMax)`

` {`

` // guess half way between the min and max values`

` // this will find the answer in the smallest number of questions`

` iGuess = (iMin+iMax)/2;`

` // ask the user`

` cout << "Is your number bigger than " << iGuess << "?\n>";`

` // get their response`

` cin >> iResponse;`

` // if they answered that the number is bigger`

` if (iResponse == 1)`

` // we know the minimum is the amount plus one`

` iMin = iGuess+1;`

` else`

` // it must be lower, so set the max to the guess`

` iMax = iGuess;`

` // when the min and max are the same, their can only be one answer`

` if (iMin == iMax)`

` // let the user know we found their number`

` cout << "You were thinking of " << iMin << "!";`

` }`

` return 0;`

`}`

Which produces:

- March 29, 2005 - Added solution 1.

© 2004-18 robson | cc unless stated