2013-09-22 4 views
-1

Подумайте о количестве от 1 до 100 в вашем уме. Затем ваша программа должна задать вам минимальное количество вопросов и определить свой номер на основе ваших ответов. Формат вопроса о программе будет NN (<, =,>)? Вы можете ответить на этот вопрос тремя способами: < указывает, что ваш номер меньше, чем предполагают компьютер, = означает, что программа угадывает ваш номер справа, а> означает, что ваш номер больше, чем предполагалось компьютером. Позвольте пользователю играть в эту игру любое количество раз. Когда пользователь готов выйти, выведите среднее число догадок/игры.Угадайте количество игр

Используйте отдельную функцию для игры. Вызывайте эту функцию из main() несколько раз по мере необходимости.

Так что вывод должен выглядеть следующим образом:

Угадай число от 1 до 100 (включительно), как и получить готовы ответить на несколько вопросов.

Это 50 (<, =,>)? <

Это 25 (<, =,>)? <

Это 12 (<, =,>)? >

Это 18 (<, =,>)? >

Это 21 (<, =,>)? <

Это 19 (<, =,>)? >

Ваше предположение 20

Это была хорошая игра! Вы хотите снова сыграть (y/n)? y

Угадайте число от 1 до 100 (оба включительно) и приготовьтесь ответить на несколько вопросов.

Это 50 (<, =,>)? >

Это 75 (<, =,>)? <

Это 62 (<, =,>)? >

Это 68 (<, =,>)? >

Это 71 (<, =,>)? =

Это была хорошая игра!

Вы хотите играть снова (y/n)? n


Это то, что у меня есть до сих пор. Однако функция playGame() даже не выполнена. Это дает мне значение 50 без каких-либо вычислений.

while ((round = 0)){ 
    printf("How about %d", guess); 
    scanf("%c", &ans); 

    if((ans = '<')){ 
     upper = guess; 
     guess = (upper+lower)/2; 
    } 
    else if ((ans = '>')){ 
     lower = guess; 
     guess = (upper+lower)/2; 
    } 
    else { 
     round = 1; 
     printf("Your number is %d", guess); 
    } 
} 
return guess; 
} 
+0

Пожалуйста, используйте 'fgets' в сочетании с' strcmp' для обработки пользовательского ввода: как 'зсапЕ ("% С", ...)' и 'зсапЕ ("% s ", ...)' неправильны (по разным причинам). Также принимайте ответ, так как исправлена ​​ваша оригинальная проблема (задайте другой вопрос, если вам нужна дополнительная помощь). – anatolyg

ответ

2

Чтобы сравнить две вещи, вы должны использовать ==, а не =, который присваивает один другому. Вы допустили эту ошибку в трех местах, поэтому даже после того, как вы исправите round = 0, она будет обрабатывать каждый ответ как <, пока вы не исправите остальные два.

Из двухстрочных скобок вокруг условий if, где вы это сделали, я предполагаю, что компилятор предупредил вас, что вы ошиблись, и вы добавили дополнительные скобки, чтобы отключить предупреждение. Не игнорируйте предупреждения компилятора, если вы не знаете, что делаете.

2

функция пустяки() даже не выполняется

Конечно, это. То, что не выполнено, - это ваша петля внутри него, потому что

while ((round = 0)) 

- это задание, а не сравнение.

+0

спасибо за помощь –

3
while ((round = 0)){ // This is an assignment. It evaluates to zero and the loop 
         // never executes 

Попробуйте

while ((round == 0)){ // This is a comparison. 
+0

Спасибо, исправлено это. Также, когда я ввожу первый знак, он автоматически дает мне ответ, не задавая дополнительных вопросов. Нравится 0: 'Как насчет 50? < Как насчет 25? Ваш номер 25 Вы хотите играть еще раз? y/n' –

+0

Такая же проблема. 'if ((ans = '<')) {' должно быть 'if ((ans == '<')) {' и т. д. Проверьте все ваши сравнения. –

+0

Я сделал это уже. все такой же –

Смежные вопросы