2013-03-04 8 views
0

Может ли кто-нибудь сказать мне, что не так с моим кодом. Я пытаюсь создать игру, где компьютер угадывает число, которое я вводил. Вот мой код:Компьютер Угадайте мой номер C Программирование


#include <stdio.h> 
#include <time.h> 
#include <stdlib.h> 

int main(void) { 

int numberGuess = 0; 
int low = 1; 
int high = 100; 
int computerGuess = 0; 

printf("Enter a number, 1 - 100: "); 
scanf("%d", &numberGuess); 

while (computerGuess != numberGuess) 
{ 

    computerGuess = ((high - low) + low)/2; 
    printf("%d ", computerGuess); 

    if (numberGuess > computerGuess) 
    { 
    printf("Your guess was to low \n"); 
    low = computerGuess+1; 
    } 
    else if (numberGuess < computerGuess) 
    { 
    printf("Your guess was to high \n"); 
    high = computerGuess-1; 
} 
    else if (numberGuess == computerGuess) 
{ 
printf("Yess!! you got it!\n"); 
    } 
} 
return 0; 
} 
+5

Почему вы не начать говорить нам, что работает по-другому, чем вы ожидаете его? –

+0

Это домашнее задание? – sschrass

+0

Прежде всего, ваша компьютерная догадка одинакова каждый раз, вы должны сделать ее рандомизированной и объявить ее до начала цикла while. – ryrich

ответ

0
computerGuess = ((high - low) + low)/2; 

Здесь вы просто добавить низко, а затем imidiately вычитать, таким образом, он делает код равный

computerGuess = ((high)/2; 

и всегда сравнивать одинаковые значения время цикла никогда не заканчивается.

+0

Это должен быть комментарий, а не ответ (действительно, я сделал тот же комментарий минуту назад). –

+0

@EricJ. Хм ...? извините, не заметил твой комментарий. Я действительно запускал код и сам нашел петлю inf. : S –

+0

Ну, с редактированием это станет ответом ... –

2

эта линия:

computerGuess = ((high - low) + low)/2; 

должно быть:

computerGuess = (high - low)/2+low; 

Что вы ищете номер на полпути между вашим высоким и низким (это двоичный поиск, но я конечно, вы знали это).

+0

Спасибо большое за помощь, я думаю, я был просто устал, чтобы увидеть эту небольшую ошибку ... Спасибо – user2133160

+0

@ user2133160 был там ... иногда вы можете Я вижу лес для деревьев. –

0

код Fix:

#include <time.h> 
#include<stdio.h> 
#include <stdlib.h> 

int main(void) { 

int numberGuess = 0; 
int low = 1; 
int high = 100; 
int computerGuess = 0; 

printf("Enter a number, 1 - 100: "); 
scanf("%d", &numberGuess); 

while (computerGuess != numberGuess) 
{ 

    computerGuess = ((high - low)/2 + low); 
    printf("%d ", computerGuess); 

    if (numberGuess > computerGuess) 
    { 
    printf("Your guess was to low \n"); 
    low = computerGuess+1; 
    } 
    else if (numberGuess < computerGuess) 
    { 
    printf("Your guess was to high \n"); 
    high = computerGuess-1; 
} 
    else if (numberGuess == computerGuess) 
{ 
printf("Yess!! you got it!\n"); 
    } 
} 

return 0; 
} 
Смежные вопросы