1 / 1 / 0
Регистрация: 15.03.2012
Сообщений: 23
1

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

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

Author24 — интернет-сервис помощи студентам
Написал программу угадывания числа. Программа работает, но есть проблема повторного вызова игры. Когда мы угадываем число, программа нам предлагает повторно начать игру, введя 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;
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.02.2013, 17:02
Ответы с готовыми решениями:

Игра «Угадай число»
Игра «Угадай число». Программа отгадывание целого числа, которое «загадал» компьютер в определенном...

Игра в угадай число
Вот код. #include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; ...

Игра «Угадай число»
4. Игра «Угадай число». Компьютер загадывает число, человек отгадывает. Всего 5 попыток. (random)

игра казино (угадай число)
Задали задание сделать вот такое казино чисел, сделал, показал ему, сказал сделать чтобы баланс...

Игра угадай число, необходимо сделать ввод n в string a
Необходимо сделать, чтобы вводили &quot;Мало, прибавь и (здесь любое число)&quot;, как это сделать, вот код ...

4
73 / 73 / 12
Регистрация: 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;
    }
}
0
1 / 1 / 0
Регистрация: 15.03.2012
Сообщений: 23
13.02.2013, 17:13  [ТС] 3
Да, глупая ошибка
0
98 / 34 / 10
Регистрация: 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;
    }
}
0
15 / 15 / 4
Регистрация: 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;
    }
}
0
13.02.2013, 18:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.02.2013, 18:33
Помогаю со студенческими работами здесь

Игра "Угадай число", не работает условие угадать число за 5 попыток
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;ctime&gt; using namespace std; int main() { int...

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

Игра "Угадай число" на Turbo C++
помогите пожалуйста.Нужно создать игру угадай число на turbo c ++. Один из играющих задумывает...

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

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

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


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru