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

Как поставить ограничение на ввод только числа - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 78, средняя оценка - 4.69
RakhimBek
165 / 1 / 0
Регистрация: 15.02.2012
Сообщений: 41
28.06.2012, 22:44     Как поставить ограничение на ввод только числа #1
у меня вопрос ) ))
как поставить ограничение на ввод
например я хочу вводить только числа )))

есть ли что то подобное как на паскаль ioresult ))
Как тридня пытась сишить местами ))

есть ли что то подобное delay() -- задержка по времени
и как напрмер изменит цвет выводимого текста как нибудь попроще
Dev C++ 4.9..
вроде она у меня единственная бодрячком пашет))
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Catstail
Модератор
 Аватар для Catstail
21503 / 10256 / 1670
Регистрация: 12.02.2012
Сообщений: 17,143
03.07.2012, 19:38     Как поставить ограничение на ввод только числа #41
Цитата Сообщение от soon Посмотреть сообщение
корявого использования include
- как это можно include использовать "коряво"?

Цитата Сообщение от soon Посмотреть сообщение
статичесткого размера символьного массива, обнуления через цикл и проч.проч.проч.
- это можно поставить мне в вину, но к try/cath это отношения не имеет. Не злись, лучше согласись...
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.07.2012, 19:56     Как поставить ограничение на ввод только числа #42
Цитата Сообщение от Catstail Посмотреть сообщение
как это можно include использовать "коряво"?
Я вот закину в папку с кодом пустой iostream.h и ничего не скомпилируется. Я уже молчу про стандарт, по которому все стандартные хидеры пишутся без .h

Цитата Сообщение от Catstail Посмотреть сообщение
Не злись, лучше согласись...
Я не злюсь, я указываю на ошибки. Хотите через try/catch - пожалуйста. Но уровнем выше должны быть флаги. Как минимум потому, что они безопаснее.
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
#include <iostream>
#include <ios>
 
std::istream& operator>>(std::istream& stream, int& i)
{
    if(!stream.good())
        throw std::ios_base::failure("Check flags");
    int tmp;
    stream.operator>>(tmp);
    if(stream.fail())
        throw std::ios_base::failure("Input error");
    i = tmp;
    return stream;
}
 
int main()
{
    int a;
    try
    {
        operator>>(std::cin, a);
        std::cout << "All ok, a = " << a << std::endl;
    }
    catch(const std::exception& exc)
    {
        std::cerr << exc.what() << std::endl;
    }
    return 0;
}
Catstail
Модератор
 Аватар для Catstail
21503 / 10256 / 1670
Регистрация: 12.02.2012
Сообщений: 17,143
03.07.2012, 20:01     Как поставить ограничение на ввод только числа #43
"Я вот закину в папку с кодом пустой iostream.h и ничего не скомпилируется" - а я вообще сотру компилятор C++... Какое это имеет отношение к теме?

"Хотите через try/catch - пожалуйста" - о чём я, собственно и говорил. А мне настойчиво повторяли, что try/catch "не имеет отношения к теме"...

Чем флаги "безопаснее"?
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.07.2012, 20:02     Как поставить ограничение на ввод только числа #44
Даже так.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
 
int main()
{
    int ivalue;
    try
    {
        std::cin >> ivalue;
        std::cin.exceptions(std::istream::failbit);
    }
    catch(const std::ios_base::failure &fail)
    {
        std::cerr << fail.what() << std::endl;
    }
}
Catstail
Модератор
 Аватар для Catstail
21503 / 10256 / 1670
Регистрация: 12.02.2012
Сообщений: 17,143
03.07.2012, 20:04     Как поставить ограничение на ввод только числа #45
Ага... Собственно, мой код ввода числа к теме не относится. А try/catch прекрасно работает.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.07.2012, 20:07     Как поставить ограничение на ввод только числа #46
Цитата Сообщение от Catstail Посмотреть сообщение
а я вообще сотру компилятор C++... Какое это имеет отношение к теме
Я говорил про общие косяки, на которые вы никак не хотите обратить внимания. Чтож, удачного кодинга.
Цитата Сообщение от Catstail Посмотреть сообщение
А мне настойчиво повторяли, что try/catch "не имеет отношения к теме"...
Неа, то что не имеет отношения, я не говорил. Я говорил, что первичнми должны быть флаги. Хотя, как показало время, связка флаги(заметьте, они все равно главенствуют) + try/catch даже очень неплоха, тут я заблуждался.
Цитата Сообщение от Catstail Посмотреть сообщение
Чем флаги "безопаснее"?
Тем, что я введу over500 символов, и программа не упадет
Catstail
Модератор
 Аватар для Catstail
21503 / 10256 / 1670
Регистрация: 12.02.2012
Сообщений: 17,143
03.07.2012, 20:16     Как поставить ограничение на ввод только числа #47
Цитата Сообщение от soon Посмотреть сообщение
try/catch даже очень неплоха, тут я заблуждался
- принимаю.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.07.2012, 20:19     Как поставить ограничение на ввод только числа #48
Catstail, Все равно читаете слово через десять.
Catstail
Модератор
 Аватар для Catstail
21503 / 10256 / 1670
Регистрация: 12.02.2012
Сообщений: 17,143
03.07.2012, 20:28     Как поставить ограничение на ввод только числа #49
Я всё прочитал... Очень тронут пожеланием. Знаешь, я программирую постоянно с 1978 г. Пока справляюсь. Мне кажется, тема исчерпана.
letnjaja
 Аватар для letnjaja
53 / 3 / 0
Регистрация: 08.10.2011
Сообщений: 200
30.09.2012, 23:03     Как поставить ограничение на ввод только числа #50
[QUOTE=David Sylva;3221999]Ещё один вариант на ввод чисел
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream> 
using namespace std; 
int main() 
{   
    setlocale(0, "rus");
    int number; 
 
    while(true) 
    { 
        cout << "Введите число " << endl; 
        cin >> number; 
        if( cin.good()) 
        { 
            cin.ignore(10, '\n'); 
            break; 
        } 
        cin.clear(); 
        cout << "Непрпвильный ввод данных " << endl; 
        cin.ignore(10, '\n'); 
    } 
    cout << "Цедое число " << number << endl; 
}
C++
1
2
3
if( cin.good())
cin.ignore(10, '\n');
cin.clear();
кто-нибудь может прокомментировать эти строчки, первый раз вижу такую запись)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2012, 23:51     Как поставить ограничение на ввод только числа
Еще ссылки по теме:

C++ Как лучше поставить ограничение на ввод букв, и знаков перпинания
3. Написать функцию, которая обеспечивает ввод с клавиатуры целого положительного числа. Функция из набора знаков должна возвращать только целые полож C++
C++ Как разрешить ввод только чисел типа int?

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

Или воспользуйтесь поиском по форуму:
alsav22
5282 / 4801 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
30.09.2012, 23:51     Как поставить ограничение на ввод только числа #51
C++
1
2
3
4
if( cin.good()) //если нет ошибки в потоке cin, cin.good() вернёт true
cin.ignore(10, '\n'); //пропускаются или 10 символов из потока ввода, 
                     //или пока не встретится '\n' (смотря, что раньше)
cin.clear();//сбросываются флаги ошибок в потоке cin
Yandex
Объявления
30.09.2012, 23:51     Как поставить ограничение на ввод только числа
Ответ Создать тему
Опции темы

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