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

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

Восстановить пароль Регистрация
 
n0n4m3r
23 / 23 / 6
Регистрация: 12.10.2013
Сообщений: 183
12.10.2013, 02:51     Игра "Угадай число" #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
#include <iostream>
#include <ctime>
 
using namespace std;
int main(){
    setlocale(LC_ALL,"rus");
    int num, ques, i, menu=1, score=0;
 
    
    do{
    system("cls");
    cout << "Данная игра в угодалку, Вам будет необходимо\nс трех попыток угадать число от 1 до 20" << endl;
    cout << "Раз угадано: " << score;
    i=0;
    srand(time(NULL));
    ques=1+rand()%20;
    do{
        [B]cout << endl << endl << "Введите число от 1 до 20: ";
        while (!(cin >> num)){
            cin.clear();
            while (cin.get() != '\n');
            cout << "Ошибка, введите целое число: ";
        }   [/B]
        if(num>=1 && num<=20)
        {
 
        if(ques!=num){
            i+=1;
            cout << "Число не угадано!" << endl << "Использовано попыток: " << i << endl << endl;
        } else {
            cout << "Вы молодец и справились с задачей, число действительно было " << ques << endl << endl;
            score+=1;
            break;
        }
    
        if(i==3){
        cout << "Вы не угадали, число было " << ques << endl << endl;
        }
    } else{
        cout << "Число должно быть целым, в промежутке от 1 до 20, исправьте число!";
        } 
 
    } while (i<3);
    cout << "Для продолжения введите 1: ";
    cin >> menu;
    
    } while (menu==1);
 
    
    system ("pause");
    return 0;
}
При вводе стринговых значений - впорядке, ошибка отображается, а при вводе флоут значения он проходит цикл и лишь потом отображает ошибку. Не подскажете, с чем может быть связано в выделенной проверке?
Миниатюры
Игра "Угадай число"   Игра "Угадай число"  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.10.2013, 02:51     Игра "Угадай число"
Посмотрите здесь:

Игра "Угадай число" C++
Игра "Угадай число" C++
Game "Угадай число" как зделать запрет на "букви" ???? C++
C++ Игра "Угадай число"!
Игра "Угадай слова" через массивы! C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4922 / 2665 / 243
Регистрация: 29.11.2010
Сообщений: 7,420
12.10.2013, 04:16     Игра "Угадай число" #2
Как вариант проверки:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
#include <string>
#include <cctype>
#include <algorithm>
#include <cstdlib>
 
int main()
{
    std::string str;
    do
    {
        std::cin >> str;
    } while (!std::all_of(str.begin(), str.end(), isdigit));
    int x = std::atoi(str.c_str());
}
n0n4m3r
23 / 23 / 6
Регистрация: 12.10.2013
Сообщений: 183
12.10.2013, 11:09  [ТС]     Игра "Угадай число" #3
Спасибо, работает, но есть ли возможность вывода ошибки о том, что введены неверные данные?
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
12.10.2013, 12:03     Игра "Угадай число" #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
    for(;;)
    {
        std::cin >> str;
        if( std::all_of(str.begin(), str.end(), isdigit) )
        {
            break;
        }
        else
        {
            std::cout << "Input digits only" << std::endl;
        }
    }
n0n4m3r
23 / 23 / 6
Регистрация: 12.10.2013
Сообщений: 183
12.10.2013, 12:39  [ТС]     Игра "Угадай число" #5
Спасибо обоим, очень помогли, заработало как было задумано, можно модифицировать дальше!
Yandex
Объявления
12.10.2013, 12:39     Игра "Угадай число"
Ответ Создать тему
Опции темы

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