![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| FiMa1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Программа работает нормально до тех пор, пока не будет введено значение, выходящее из диаппазона чисел типа int: Вводим 9999999999, заведомо большее INT_MAX=2147483647 (LIMITS.H) - nmonth=-858993460, и программа виснет в цикле...
Аналогичное значение (-858993460) заносится в nmonth, если была введена, к примеру, буква 'a'. Добавление проверки условий: if ( nmonth > INT_MAX || nmonth < INT_MIN || nmonth <= 0 || nmonth > 12 ) cout << "Wrong entries!" << endl; не привело к какому-либо положительному результату... cin не реализует проверки значений для заданных типов? Второй вопрос: do while в цикле ждет корректного ввода, при этом, если нажать Enter, то переход на следующую строку осуществляется, но запрос ввода ("Input number of a month: ") по-прежнему остается в первой строке. Можно как-нибудь пропускать ввод новой строки для этого случая?
|
|||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Уберечься от ввода символа и слишком большого числа можно так:
Это сообщение отредактировал(а) Xenon - 31.3.2007, 13:39 |
|||
|
||||
| FiMa1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Спасибо! А что за магическое число -858993460 (см. выше).. никто не знает? Компилировалось в MS VS .NET 2003.
Ну и как игнорировать ввод перехода на новую строку тоже бы было интересно узнать... |
|||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
FiMa1, В смысле ввод перехода на новую строку? Выкинуть из потока '\n' ? Ну так в моем примере он выбрасывается. cin.ignore(10,'\n') сожрет из потока 10 символов + разделитель.
|
|||
|
||||
| vinter |
|
|||
![]() Explorer ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2735 Регистрация: 1.4.2006 Где: Н.Новгород Репутация: 13 Всего: 56 |
||||
|
||||
| FiMa1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Всем большое спасибо!!!
|
|||
|
||||
| FiMa1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
To Xenon: выводится лишних предупреждений при вводе более двух символов (например "abc")...
В случае с std::cin.ignore(10,'\n'); соответственно при вводе больше 10 символов... Это сообщение отредактировал(а) FiMa1 - 31.3.2007, 17:53 |
|||
|
||||
| Dov |
|
|||
![]() аСинизатор ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1721 Регистрация: 10.5.2003 Где: Эрец-Исраэль Репутация: 15 Всего: 88 |
-------------------- Тут вечности запах томительный, И свежие фрукты дешевые, А климат у нас – изумительный, И только соседи – #уевые. Игорь Губерман. |
|||
|
||||
| FiMa1 |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 408 Регистрация: 23.9.2006 Репутация: 5 Всего: 6 |
Ну спасибо, Dov, отремонтировал! Разумеется меня такой вариант более чем устраивает, но....
Input number of a month: Wrong entries! Input number of a month: Wrong entries! Input number of a month: Wrong entries! Input number of a month: Wrong entries! Input number of a month: Wrong entries! Input number of a month: Wrong entries! Input number of a month: Wrong entries! при вводе 4094 символов (кажется, максимально возможный ввод для консоли, т.к. после этого ввод был более не возможен) ЗЫ: не судите строго за, можно сказать, оффтоп.. Всем еще раз большое спасибо за участие! |
|||
|
||||
| Xenon |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 1529 Регистрация: 12.4.2006 Репутация: 11 Всего: 50 |
Упс, пардон большой, я сморозил глупость, точнее не доглядел
Добавлено через 1 минуту и 2 секунды Но у Dov под ситуацию уже подогнан код - у меня абстрактный пример. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |