Игра "Угадай число" - C (СИ) (75492)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте! Помогите мне, пожалуйста. Нужно написать игру «Угадай число». Программа с помощью датчика случайных чисел выбирает число в диапазоне от 0 до 9. Угадать это число за три попытки. После каждой попытки сообщается, больше или меньше названное число задуманного. Вот мой код:
#include "stdio.h"
#include "stdlib.h"
#include "conio.h"
#include "time.h"
 
int main()
{
    srand (unsigned (time(NULL)));
    int i, a, b, c;
    printf("Igra ygadai chislo\n");
    printf("Computer zagadal chislo ot 0 do 9\n");
    a=rand()%9+0;
    do
    {
     c:
    printf("Vvedite chislo i nagmite Enter\n");
    scanf("%d", &b);
    if(b==a)
    {
        printf("Vi viigraly\n");
        //printf("Vi otgadaly s i popytki");
    }
    if(b>a)
    {
        printf("Net, vvedennoe chislo bolshe\n"); goto c;
    }
    if(b<a)
    {
         printf("Net, vvedennoe chislo menshe\n"); goto c;
    }
    if(b!=a && i==3)
    {
         printf("Vi prigraly\n");
         printf("Pravilnoe chislo\n", a); break;
    }
    }
    while(i!=3);
    getche();
}
Вроде бы все работает, но не очень правильно, потому что программа не ограничивается тремя попытками, а после выигрыша игра не заканчивается. Очень нужна помощь,

Решение задачи: «Игра "Угадай число"»

textual
Листинг программы
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
#define NUM_OF_ATTEMPTS (3)
#define NUMBER_BOUND (10)
 
int main(void) {
    int number, guessed, attempt;
    
    srand(time(NULL));
    
    number = rand() % NUMBER_BOUND;
    attempt = 1;
    
    while ( attempt <= NUM_OF_ATTEMPTS ) {
        printf("Attempt #%d: ", attempt);
        scanf("%d", &guessed);
        
        if ( guessed == number )
            break;
        printf("%s!\n", ( guessed < number ) ? "bigger" : "smaller");
        
        ++attempt;
    }
    
    printf("You %s!\n", ( attempt > NUM_OF_ATTEMPTS ) ? "loose" : "win");
}

Объяснение кода листинга программы

  1. Подключение необходимых библиотек: iostream, cstdlib, ctime.
  2. Определение констант: NUM_OF_ATTEMPTS (количество попыток), NUMBER_BOUND (верхняя граница числа).
  3. Объявление переменных: number (угадываемое число), guessed (предположение пользователя), attempt (попытка).
  4. Инициализация генератора случайных чисел srand(time(NULL)).
  5. Генерация случайного числа в диапазоне от 0 до NUMBER_BOUND (включительно) с помощью выражения rand() % NUMBER_BOUND.
  6. Запуск цикла while, который будет выполняться до тех пор, пока количество попыток не будет превышать заданное значение.
  7. В каждой итерации цикла пользователю предлагается ввести предположение о числе, а затем выполняется проверка, равно ли введенное число угадываемому числу.
  8. Если предположение пользователя верно, цикл прерывается.
  9. Если предположение пользователя неверно, пользователю выводится сообщение bigger или smaller в зависимости от того, больше или меньше введенное число угадываемого числа.
  10. После каждой итерации цикла увеличивается значение переменной attempt.
  11. По завершении цикла выводится сообщение You win! или You loose! в зависимости от того, было ли угадываемое число угадано в пределах заданного количества попыток.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.714 из 5
Похожие ответы