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

Пользователь должен отгадать рандомное число - C++

Восстановить пароль Регистрация
 
kychka
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 42
23.10.2013, 00:04     Пользователь должен отгадать рандомное число #1
Всем привет:-) Начал изучать c++ самостоятельно и часто посещал ваш форум как гость. Спустя некоторое время понял, что если зарегистрируюсь, то буду заниматься c++ ещё больше

Решил я написать программу, которая загадывает рандомное число, а пользователь должен его отгадать за одну минуту. При этом у него, допустим 100 попыток,а сама программа выводит после каждой "больше или меньше загаданного введенное пользователем число".
Столкнулся с проблемой: Итак, сначала пользователь вводит размерность, т.е если он введет 105, то от 0 до 105 он должен будет отгадать число. Это работает. Далее появляется сообщение "отгадайте число от 0 до n" и затем еще одно сообщение "у вас 100 попыток и одна минута". далее ничего не происходит. То есть я не могу ввести ни одно число, просто не работает ввод пользователем..

Как исправить и куда копать?

Вот код c++ Visual Studio:
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
#include <iostream>
#include <stdlib.h>
#include <Windows.h>
using namespace std;
 
 
int main() 
{
    setlocale(LC_CTYPE, "");
    int n,m,i;
    int *j=new int;
    cout<<"Введите размерность "; 
    cin>>n;
   m = 0 + rand() % n;
    cout<<"Угадайте число от 0 до "<<n<<"\nУ Вас 100 попыток и одна минута";
    
        
    while(i=0,i<100,i++){
        cin>>*j;
        
        
            if (*j>m) 
            {
                cout<<"\nЗагаданное число меньше введенного";
            } 
                if (*j<m) 
                {
                    cout<<"\nЗагаданное число больше введенного";
                } 
                    else 
                    {
                        cout<<"Поздравляем! Вы выйграли! Это число:"<<m;
                    }
          }         
    
 
    Sleep(60000);
 
 
 
 
 
    return 0;
}
Благодарю
p.s. Скажите как новичку как стоит на будущее излагать вопрос, если в этом есть какие то недочёты.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2013, 00:04     Пользователь должен отгадать рандомное число
Посмотрите здесь:

Программа задумывает число от 1 до 10, и предлагает пользователю отгадать число за 5 попыток C++
массивчик не понял сути, пользователь сам должен вводить массив? C++
C++ Программа, которая в диапазоне от 0 до 100 загадывает число, а пользователь должен его угадать
C++ Задать рандомное число
рандомное число всегда 22.... почему ? C++
C++ Отгадать число 1-1000
C++ Отгадать загаданное число
C++ Рандомное число

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ryuk
 Аватар для Ryuk
179 / 177 / 33
Регистрация: 10.06.2011
Сообщений: 869
23.10.2013, 00:12     Пользователь должен отгадать рандомное число #2
kychka, это метод двоичного поиска. Думаю вам будет самому интереснее разобраться в принципах его работы тут и тут, да и практика хорошая, если же нет, спрашивайте
kychka
0 / 0 / 0
Регистрация: 22.10.2013
Сообщений: 42
23.10.2013, 12:12  [ТС]     Пользователь должен отгадать рандомное число #3
Спасибо за ответ. Я так понял, что этот метод (бинарный поиск) основан на поиске элемента в массиве(отсортированном). А у меня ведь не массив, у меня лишь надо проверить равно ли введенное мною число, которое по идее должно с каждым циклом просто переприсваиваться и проверяться на равенство. Т.е я ввёл j, программа проверила равны ли j и m и всё..И так на протяжении 60ти секунд или 100 попыток. Поправьте меня, если не прав.

Написал маленькую программу где загаданное число уже определено программой и не рандомизируется.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int n=5,j;
    cout<<"Угадайте число";
    cin>>j;
    if (j>n) {
        cout<<"Загаданное число меньше введенного";
             } else
                    if (j<n) {
                        cout<<"Загаданное число больше введенного";
                    }
                    else { 
                        cout<<"Вы выйграли!";
                    }
                    
                    
    
 
                    Sleep(50000);

Здесь всё работает верно, кстати благодаря этому примеру нашел ошибку в предыдущем коде - после if пропустил один else.

Так нужно ли мне здесь работать с массивом?

Добавлено через 24 минуты
нашел еще ошибку с циклом while, записал его как for..
теперь есть прогресс. по моему работает еще протестрирую, отпишусь

Добавлено через 9 минут
всё работает)
Yandex
Объявления
23.10.2013, 12:12     Пользователь должен отгадать рандомное число
Ответ Создать тему
Опции темы

Текущее время: 11:20. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru