Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/4: Рейтинг темы: голосов - 4, средняя оценка - 5.00
Aydar1313
0 / 0 / 0
Регистрация: 18.11.2013
Сообщений: 84
1

Как реализовать запрет на ввод в консоли?

23.10.2014, 15:52. Просмотров 737. Ответов 5
Метки нет (Все метки)

Как сделать так чтобы пользователь мог вводить только целые положительные числа
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.10.2014, 15:52
Ответы с готовыми решениями:

Как реализовать ввод многомерного массива пользователем с консоли?
Где ошибка? Программа коопилируется, но не получается ввести значение массива. ...

Запрет на ввод букв в консоли на C++
Здравствуйте, сижу за С++ не много, так что не очень в нем разбираюсь....

Реализовать ввод строки с консоли пользователем и найти количество заданного символа в введённой строке
Ввести предложение и подсчитать сколько букв 'н' в нем.

Как прекратить ввод данных из консоли
Программа должна считывать пары точек (x, y), но заранее не известно количество...

Как организовать ввод в 2 вектора с консоли
Задание: В консоли,в одну строку вводятся через пробелы значения типа integer,...

5
Ilot
Эксперт С++
1831 / 1189 / 342
Регистрация: 16.05.2013
Сообщений: 3,139
Записей в блоге: 5
Завершенные тесты: 1
23.10.2014, 15:58 2
C++
1
2
3
unsigned num;
if(!(std::cin >> num))
    std::cout << "Ты шо делаешь?!\n";
0
Evg
Эксперт CАвтор FAQ
19288 / 7147 / 528
Регистрация: 30.03.2009
Сообщений: 19,997
Записей в блоге: 30
23.10.2014, 16:52 3
Полноценно - всё что вводится, всегда считывать как строку, затем её обрабатывать и, если видишь, что там есть что-то запрещённое, выдаёшь ошибку и заставляешь вводить повторно

Добавлено через 2 минуты
Цитата Сообщение от Ilot Посмотреть сообщение
C++
1
2
3
unsigned num;
if(!(std::cin >> num))
    std::cout << "Ты шо делаешь?!\n";
Если ввести "4q", то нормально съест, хотя по смыслу поставленного вопроса не должно
1
Somebody
2799 / 1610 / 251
Регистрация: 03.12.2007
Сообщений: 4,213
Завершенные тесты: 3
23.10.2014, 19:49 4
Типа того (если ничего не пропустил; число в отдельной строке без пробелов):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
unsigned n;
while (true)
{
    if (isdigit(cin.peek()) && cin >> n && cin.peek() == '\n' && n != 0)
        break;
    if (cin.bad() || cin.eof())
    {
        cout << "Input error" << endl;
        return 0;
    }
    cout << "The string entered is not a valid positive number. Try again: " << flush;
    cin.clear();
    cin.ignore(numeric_limits<streamsize>::max(), '\n');
}
0
alsav22
5442 / 4837 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
23.10.2014, 19:50 5
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
54
55
56
57
58
59
#include <conio.h>
#include <stdio.h>
 
int GetInt()
{
   int k,n=0,flgS=0,c=0,q=0;
 
    while (1)
   {
 
        k=getch();
        
        if ((k == '-') && (c == 0) && (flgS == 0)) 
       {
          flgS=-1;
          putch('-');
          c++;
       }
 
       if ((k >= '0') && (k <= '9')) 
       {
           printf("%c",k);
           n=n*10+k-'0';
           c++;
           q++;
       }
     
       if (k == 8)
       {
           
           putch(8);
           putch(' ');
           putch(8);
           n=n / 10;
           q--;
           if (q < 0) q=0;
           c--;
           if (c < 0) {flgS=0; c = 0;}
       }
 
       if ((k == 13) && (c != 0) && (q != 0)) break;
 
    }
 
    if (flgS == -1) n =- n;
    return n;
}
 
int main(int argc, char* argv[])
{
 
    int m;
 
    m=GetInt();
    printf("\nYou have inputed: %d\n",m);
    getch();
    return 0;
 
}
0
TrueBit
96 / 96 / 47
Регистрация: 19.11.2012
Сообщений: 195
23.10.2014, 20:37 6
Попробуйте так:
Кликните здесь для просмотра всего текста
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
#include <iostream>
#include <algorithm>
#include <string>
 
int main() {
    std::string str;
    std::string numbers("0123456789");
    while(1) {
        std::cin >> str;
 
        bool num=true;
        for(size_t i=0; i<str.size(); i++) {
            if(std::search(numbers.begin(),numbers.end(),str.begin()+i,str.begin()+(i+1))==numbers.end()) {
                num=false;
                break;
            }
        }
 
        if(num)
            std::cout << str << " is num" << std::endl;
        else
            std::cout << str << " is not num" << std::endl;
    }
 
}
Для преобразование в unsigned int можно использовать atoi из <cstdlib>:
C++
1
2
3
4
5
6
#include <string>
#include <cstdlib>
...
std::string str
...
unsigned int = atoi(str.c_str());
0
23.10.2014, 20:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.10.2014, 20:37

Как реализовать очистку консоли?
Здравствуйте. Только начал обучение по самоучителю,импровизирую. Написал...

Как происходит ввод и обработка символов из консоли?
Приветствую, не могли бы вы мне подсказать на счет одной вещи. В книге...

Как разрешить ввод пустой сроки в консоли?
Подскажите пожалуйста, как сделать так чтобы пользователь мог вводить пустую...


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

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

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