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

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

28.06.2012, 22:44. Просмотров 16020. Ответов 50
Метки нет (Все метки)

у меня вопрос ) ))
как поставить ограничение на ввод
например я хочу вводить только числа )))

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

есть ли что то подобное delay() -- задержка по времени
и как напрмер изменит цвет выводимого текста как нибудь попроще
Dev C++ 4.9..
вроде она у меня единственная бодрячком пашет))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.06.2012, 22:44
Ответы с готовыми решениями:

Ограничение на ввод (только целые числа)
Нужно задать ограничение на ввод только целых чисел. При вводе дробного числа...

Как лучше поставить ограничение на ввод букв, и знаков перпинания
Добрый вечер! подскажите, как лучше поставить ограничение на ввод букв, и...

Ограничение на ввод символов (разрешить ввод только цифр)
Всем доброго времени суток! Я начал изучать С++ и у меня возник такой...

Ограничение на ввод только цифр
Друзья, У тут меня проблемка возникла, помогите, пожалуйста ;) Коротко: я...

Ввод только целого числа
Здравствуйте. Нужно сделать защиту от ввода букв, дробных чисел( 2.5) и цифр с...

50
Catstail
Модератор
23618 / 11718 / 2047
Регистрация: 12.02.2012
Сообщений: 19,115
03.07.2012, 19:38 41
Цитата Сообщение от soon Посмотреть сообщение
корявого использования include
- как это можно include использовать "коряво"?

Цитата Сообщение от soon Посмотреть сообщение
статичесткого размера символьного массива, обнуления через цикл и проч.проч.проч.
- это можно поставить мне в вину, но к try/cath это отношения не имеет. Не злись, лучше согласись...
0
soon
2546 / 1311 / 177
Регистрация: 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;
}
0
Catstail
Модератор
23618 / 11718 / 2047
Регистрация: 12.02.2012
Сообщений: 19,115
03.07.2012, 20:01 43
"Я вот закину в папку с кодом пустой iostream.h и ничего не скомпилируется" - а я вообще сотру компилятор C++... Какое это имеет отношение к теме?

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

Чем флаги "безопаснее"?
0
soon
2546 / 1311 / 177
Регистрация: 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;
    }
}
0
Catstail
Модератор
23618 / 11718 / 2047
Регистрация: 12.02.2012
Сообщений: 19,115
03.07.2012, 20:04 45
Ага... Собственно, мой код ввода числа к теме не относится. А try/catch прекрасно работает.
0
soon
2546 / 1311 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.07.2012, 20:07 46
Цитата Сообщение от Catstail Посмотреть сообщение
а я вообще сотру компилятор C++... Какое это имеет отношение к теме
Я говорил про общие косяки, на которые вы никак не хотите обратить внимания. Чтож, удачного кодинга.
Цитата Сообщение от Catstail Посмотреть сообщение
А мне настойчиво повторяли, что try/catch "не имеет отношения к теме"...
Неа, то что не имеет отношения, я не говорил. Я говорил, что первичнми должны быть флаги. Хотя, как показало время, связка флаги(заметьте, они все равно главенствуют) + try/catch даже очень неплоха, тут я заблуждался.
Цитата Сообщение от Catstail Посмотреть сообщение
Чем флаги "безопаснее"?
Тем, что я введу over500 символов, и программа не упадет
0
Catstail
Модератор
23618 / 11718 / 2047
Регистрация: 12.02.2012
Сообщений: 19,115
03.07.2012, 20:16 47
Цитата Сообщение от soon Посмотреть сообщение
try/catch даже очень неплоха, тут я заблуждался
- принимаю.
0
soon
2546 / 1311 / 177
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
03.07.2012, 20:19 48
Catstail, Все равно читаете слово через десять.
0
Catstail
Модератор
23618 / 11718 / 2047
Регистрация: 12.02.2012
Сообщений: 19,115
03.07.2012, 20:28 49
Я всё прочитал... Очень тронут пожеланием. Знаешь, я программирую постоянно с 1978 г. Пока справляюсь. Мне кажется, тема исчерпана.
0
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();
кто-нибудь может прокомментировать эти строчки, первый раз вижу такую запись)
0
alsav22
5442 / 4837 / 831
Регистрация: 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
0
30.09.2012, 23:51
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
30.09.2012, 23:51

Вводится некоторое количество чисел. ввод кончается 0. оставить только повторяющиеся числа
Вводится некоторое количество чисел. ввод кончается 0. выбросить все...

Ограничение на ввод
Как сделать ограничение, чтобы |x|&gt;3? Помогите пожалуйста #include...

Ограничение на ввод
В программе пользователь должен вводить только целые числа. Если введет...


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

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

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