C программа для написания игры GUESS с определенными ограничениями. Возникают проблемы - ошибка в коде, логи c кода, предложения - PullRequest
0 голосов
/ 19 марта 2020

Вопрос:

Напишите игру-угадайку, в которой пользователь должен угадать секретное число. После каждого предположения программа сообщает пользователю, было ли их число слишком большим или слишком маленьким. В конце необходимо указать количество попыток. Это считается только одной попыткой, если они вводят одно и то же число несколько раз подряд.

Мой код:

#include<stdio.h>
#include<stdlib.h>
int compare(int m) {
    int b;
    b=73-m; ///I chose my number as 73 here.

    if (b=0) printf("Congrats, you won.");
    else {
        if (-5 < b < 5) printf("Very Close\n"); ///always gives me this output two times.
        else {
            if (-15 < b < 15) printf("Close");
            else {
                printf("You are far");
            }
        }
    }
    return b;
}

int main() {
    int arr[100],guess,count=0,i,m; ///I have 99 tries.
    arr[0]=0;
    for(i=1 ; i<=100 ; i++) {
        printf("Enter your guess\n");
        scanf("%d",&guess);
        if(guess==arr[i-1]) {
            arr[i]=guess;
            printf("Guess is same as the previous input.\n");
        } else {
            arr[i]=guess;
            compare(guess);
            if (m = compare(guess)) {
                count=count+1; /// can i create a separate function to keep the count?
                printf("%d is the number of tries.\n",count);
                break;
            } else {
                printf("\n");
            }
        }
    }
    return 0;
}

Это всегда дает мне то же самое выводить два раза т.е. "Очень близко Очень близко". Я думаю, это либо неверный код (синтаксис), либо неправильный лог c. Также я хочу узнать лучший алгоритм / логи c с кодом для решения этого вопроса (возможно, короче). Наконец Я новичок в программировании с C в качестве моего первого языка.

1 Ответ

3 голосов
/ 19 марта 2020

Условие -5 < b< 5 равно (-5 < b) < 5, что означает, что вы сравниваете логический (0 или 1) результат -5 < b с 5.

Если вам нужно сравните b с диапазоном, который вам нужно сделать -5 < b && b < 5. Т.е. сравните b явно с обоих концов диапазона.

Также b = 0 - это назначение не сравнение, вам нужно использовать == для сравнения .

...