|
3 / 1 / 0
Регистрация: 09.10.2012
Сообщений: 25
|
||||||
Проверка на правильность ввода с клавиатуры23.10.2012, 12:12. Показов 123244. Ответов 30
Метки нет (Все метки)
Здравствуйте!
задача: пользователь вводит с клавиатуры цифру, нужно проверить что пользователь действительно ввел цифру, а не букву, знак или сочетание вышесказанного (db, 24d, 2k5) вот на чем я остановился
![]() может кто то сталкивался?
0
|
||||||
| 23.10.2012, 12:12 | |
|
Ответы с готовыми решениями:
30
Проверка на правильность ввода C++ Проверка на правильность ввода значения. Проверка на правильность ввода |
|
2 / 2 / 2
Регистрация: 16.10.2012
Сообщений: 69
|
|
| 23.10.2012, 16:29 | |
|
пробуй функцию atoi();
0
|
|
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
| 24.10.2012, 05:43 | |
|
HarryFranc, atoi в случае некорректного аргумента тихо-мирно вернет 0, так что не подходит.
Петр1, можно считывать в строку и разбирать ее содержимое.
1
|
|
|
Неэпический
|
||
| 24.10.2012, 05:56 | ||
|
0
|
||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
| 24.10.2012, 06:02 | |
|
Croessmah, при этом во входном потоке останется мусор, и для того, чтобы последующее чтение прошло корректно, нужно этот мусор убрать, что делается не очень очевидным образом.
А разбирать содержимое строки точно так же методами классов stringstream, проверяя те же выставляемые флаги на предмет ошибки.
0
|
|
|
3 / 1 / 0
Регистрация: 09.10.2012
Сообщений: 25
|
||||||
| 24.10.2012, 12:07 [ТС] | ||||||
|
Добрый день!
Вот что получилось:
0
|
||||||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||||
| 24.10.2012, 12:27 | ||||||
|
Не стоит использовать gets. Лучше использовать fgets.
Разбор строки не нужно делать вручную, можно воспользоваться strtod или sscanf:
3
|
||||||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
| 24.10.2012, 14:22 | ||||||
5
|
||||||
|
3 / 1 / 0
Регистрация: 09.10.2012
Сообщений: 25
|
||||||||||||||||
| 24.10.2012, 14:36 [ТС] | ||||||||||||||||
Функция sscanf просматривает входные поля, символ за символом. buf - это то что мы смотрим символ за символом
0
|
||||||||||||||||
|
54 / 54 / 10
Регистрация: 26.09.2011
Сообщений: 186
|
||||||
| 24.10.2012, 14:58 | ||||||
|
А чего б не использовать функцию isdigit...
0
|
||||||
|
3 / 1 / 0
Регистрация: 09.10.2012
Сообщений: 25
|
||
| 24.10.2012, 16:02 [ТС] | ||
|
0
|
||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
| 24.10.2012, 16:15 | ||||||
|
Вот код, который даже не выводит на экран, если это не цифра (или не знак числа перед цифрой):
2
|
||||||
|
54 / 54 / 10
Регистрация: 26.09.2011
Сообщений: 186
|
||
| 24.10.2012, 16:23 | ||
|
0
|
||
|
3 / 1 / 0
Регистрация: 09.10.2012
Сообщений: 25
|
|
| 24.10.2012, 16:25 [ТС] | |
|
ого, круто.
подскажите пожалуйста где почтитать про %d %s %c и тд. я не могу понять как этим выражением пользоваться.
0
|
|
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
|
| 24.10.2012, 16:29 | |
|
alsav22, cin.clear по стандарту не очищает входной поток, а всего лишь сбрасывает установленные флаги. Для этого лучше использовать метод ignore, но и у него есть свои недостатки.
0
|
|
|
54 / 54 / 10
Регистрация: 26.09.2011
Сообщений: 186
|
||
| 24.10.2012, 16:30 | ||
|
Ввод данных в языке С. Это форматированный ввод данных. Токо зачем оно тебе не пойму
1
|
||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
|||||||
| 24.10.2012, 16:33 | |||||||
0
|
|||||||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||||
| 24.10.2012, 16:34 | ||||
|
Тут проверяется, что в введенной строке содержится именно число и что после этого числа нет никакого «мусора». Ну и параллельно считывается это число из строки.
1
|
||||
|
5500 / 4895 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
|
||||||
| 24.10.2012, 16:36 | ||||||
|
Вот ещё один вариант того же:
0
|
||||||
|
5828 / 3479 / 358
Регистрация: 08.02.2010
Сообщений: 7,448
|
||
| 24.10.2012, 16:44 | ||
|
Добавлено через 4 минуты Вот очень хорошая статья про то, какими способами можно очищать входной поток, и почему эти способы часто не работают.
0
|
||
| 24.10.2012, 16:44 | |
|
Помогаю со студенческими работами здесь
20
Проверка StringGrid на правильность ввода Проверка на правильность ввода текста
Проверка ввода с клавиатуры Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. .
Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
|
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла:
Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
|
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога
Финальные проекты на Си и на C++:
finish-text-sdl3-c. zip
finish-text-sdl3-cpp. zip
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью в КА2. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа в КА2.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию. . .
|