Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Mikle90
1 / 1 / 0
Регистрация: 15.03.2012
Сообщений: 23
#1

Игра "Угадай число" - C++

13.02.2013, 17:02. Просмотров 996. Ответов 4
Метки нет (Все метки)

Написал программу угадывания числа. Программа работает, но есть проблема повторного вызова игры. Когда мы угадываем число, программа нам предлагает повторно начать игру, введя 1. Но после ввода 1, приложение завершает работу. Помогите разобраться

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int zagadka (int);
int main()
{
    setlocale(0,"");
    int chislo;
    char otvetili;
 
    cout << "Мое число между 1 и 1000\nВы можете его отгадать ?\nПожалуйста, напечатайте вашу первую догадку" << endl;
    cin >> chislo;
    int a = zagadka(chislo);
    if (a == 1) // не срабатывает это условие, когда число отгадали
    {
        cout << "Мое число между 1 и 1000\nВы можете его отгадать ?\nПожалуйста, напечатайте вашу первую догадку" << endl;
        cin >> chislo;
        zagadka(chislo);
    }
 
}
int zagadka (int chisl)
{
    srand(time(NULL));
    int zagadanoe = 1 + rand()%1000;
    int otvet;
 
    while (chisl != zagadanoe)
    {
        if (chisl < zagadanoe)
        {
            cout << "Мало. Введите снова" << endl;
            cin >> chisl;
        }
        if (chisl > zagadanoe)
        {
            cout << "Много. Введите снова" << endl;
            cin >> chisl;
        }
    }
 
    if (chisl == zagadanoe)
    {
        cout << "Отлично! Вы отгадали число" << endl
            << "Хотели бы сыграть еще раз ? (Да (1) или Нет (0))" << endl;
        cin >> otvet;
        if (otvet == 1)
            return 1;
        else if (otvet == 0)
            return 0;
    }
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.02.2013, 17:02     Игра "Угадай число"
Посмотрите здесь:

Готовая игра "угадай число" - C++
#include &lt;iostream.h&gt; int main () { int x=rnd%256; int d; int masks={0x80, 0x40, 0x20, 0x10, 0x08, 0x04, 0x02, 0x01}; ...

Игра "Угадай число" - C++
Здравствуйте,помогите у кого есть время и возможность вообщем задание такое: нужно написать прогу,где юзер вводит любое число ...

Игра "Угадай число" - C++
Ребят крч сегодня начал учить c++, задача была сделать игру &quot;Угадай число&quot; с фиксированным числом. Вроде начал делать и я не понимаю просто...

Игра "Угадай число" - C++
2)Написать программу, которая &quot;задумывает&quot; число в диапазоне от 1 до 10 и предлагает пользователю угадать число за 5 попыток. Ниже...

Игра "Угадай число" - C++
Пожайлуста, решите задачу на С++ с условием:написать программу, которая &quot;задумывает&quot; число в диапазоне от 1 до 10 и предлагает пользователю...

Игра "Угадай число" - C++
#include &lt;iostream&gt; #include &lt;ctime&gt; using namespace std; int main(){ setlocale(LC_ALL,&quot;rus&quot;); int num, ques, i, menu=1,...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
The_bolT
70 / 70 / 1
Регистрация: 22.01.2013
Сообщений: 231
13.02.2013, 17:10     Игра "Угадай число" #2
В вас otvet типа char а вы сравниваете как int значение!
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
int zagadka (int);
int main()
{
    setlocale(0,"");
    int chislo;
    char otvetili;
 
    cout << "Мое число между 1 и 10\nВы можете его отгадать ?\nПожалуйста, напечатайте вашу первую догадку" << endl;
    cin >> chislo;
    int a = zagadka(chislo);
    if (a == 1) // не срабатывает это условие, когда число отгадали
    {
        cout << "Мое число между 1 и 10\nВы можете его отгадать ?\nПожалуйста, напечатайте вашу первую догадку" << endl;
        cin >> chislo;
        zagadka(chislo);
    }
 
}
int zagadka (int chisl)
{
    srand(time(NULL));
    int zagadanoe = rand()%10+1;
    char otvet;
 
    while (chisl != zagadanoe)
    {
        if (chisl < zagadanoe)
        {
            cout << "Мало. Введите снова" << endl;
            cin >> chisl;
        }
        if (chisl > zagadanoe)
        {
            cout << "Много. Введите снова" << endl;
            cin >> chisl;
        }
    }
 
    if (chisl == zagadanoe)
    {
        cout << "Отлично! Вы отгадали число" << endl
            << "Хотели бы сыграть еще раз ? (Да (1) или Нет (0))" << endl;
        cin >> otvet;
        if (otvet == '1')
            return 1;
        else if (otvet == '0')
            return 0;
    }
}
Mikle90
1 / 1 / 0
Регистрация: 15.03.2012
Сообщений: 23
13.02.2013, 17:13  [ТС]     Игра "Угадай число" #3
Да, глупая ошибка
Alexxx7
97 / 33 / 5
Регистрация: 24.04.2012
Сообщений: 151
13.02.2013, 17:34     Игра "Угадай число" #4
Всё верно в третий раз функия не вызовется, так как желание продолжить игру вы проверяете 1 раз, для постоянного отслеживания можно поменять if на while

Добавлено через 11 минут
Я бы упростил до такого
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
#include<iostream>
#include<stdlib.h>
#include<time.h>
using namespace std;
void zagadka (void);
int main()
{
    setlocale(0,"");
    char a = '1';
    while(a == '1'){
        zagadka();
       cout << "Отлично! Вы отгадали число" << endl
            << "Хотели бы сыграть еще раз ? (Да (1) или Нет (0))" << endl;
       cin >> a;
    }
}
void zagadka (void)
{
    srand(time(NULL));
    int zagadanoe = 1 + rand()%1000;
    int otvet;
    cout << "Мое число между 1 и 1000\nВы можете его отгадать ?\nПожалуйста, напечатайте вашу первую догадку" << endl;
    cin >> otvet;
    while (otvet != zagadanoe)
    {
        if (otvet < zagadanoe)
            cout << "Мало. Введите снова" << endl;
        if (otvet > zagadanoe)
            cout << "Много. Введите снова" << endl;
            cin >> otvet;
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.02.2013, 18:33     Игра "Угадай число"
Еще ссылки по теме:

Игра "Угадай число" - C++
Нужно доделать код программы... (Желательно до 24-го числа.. но можно и позже) Задание: напишите программу, которая будет уметь...

Игра "Угадай число" - C++
Помогите написать программу!!!Вот задание: Игра «Угадай число»: составьте программу определения компьютером задуманного человеком числа от...

"Угадай число" (напишите программу, хочу проверить со своей). - C++
&quot;Угадай число&quot;. Пользователю предлагается отгадать число за 10 попыток. Программа даёт подсказки вида больше, меньше.

Реализовать генерацию случайных чисел для игры "Угадай число" - C++
Всем привет!написал код для игры. По условию компьютер должен загадать число от 1 до 100 и пользователь должен отгадать это число за 6...

Исправить ошибки в программе "угадай число" - C++
суть программы, генерирует случайное число от 1 до 1000, запрашивает число и говорит больше или меньше, если введено не число выдаёт...

Нужен совет по задаче "Угадай число" - C++
Вася загадал число от 1 до N. За какое наименьшее количество вопросов (на которые Вася отвечает &quot;да&quot; или &quot;нет&quot;) Петя может угадать Васино...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
makShot
15 / 15 / 1
Регистрация: 07.07.2011
Сообщений: 38
13.02.2013, 18:33     Игра "Угадай число" #5
А еще можно добавить проверку числа a на валидные данные (на случай, если введено не 1 и не 0):

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
#include<iostream>
#include<stdlib.h>
#include<time.h>
 
using namespace std;
 
void zagadka (void);
int main()
{
    setlocale(0,"");
    char a = '1';
    while(a == '1'){
        zagadka();
       cout << "Отлично! Вы отгадали число" << endl;
 
       do
       {
           if ((a != '1') && (a != '0'))
               cout <<  "Неверное значение. Пожалуйста, повторите попытку"  <<  endl;
 
           cout << "Хотели бы сыграть еще раз ? (Да (1) или Нет (0))" << endl;
           cin >> a;
       } while ((a != '1') && (a != '0'));
       
    }
}
void zagadka (void)
{
    srand(time(NULL));
    int zagadanoe = 1 + rand()%1000;
    int otvet;
    cout << "Мое число между 1 и 1000\nВы можете его отгадать ?\nПожалуйста, напечатайте вашу первую догадку" << endl;
    cin >> otvet;
    while (otvet != zagadanoe)
    {
        if (otvet < zagadanoe)
            cout << "Мало. Введите снова" << endl;
        if (otvet > zagadanoe)
            cout << "Много. Введите снова" << endl;
            cin >> otvet;
    }
}
Yandex
Объявления
13.02.2013, 18:33     Игра "Угадай число"
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru