0 / 0 / 0
Регистрация: 12.04.2011
Сообщений: 9
|
||||||
1 | ||||||
Запрет на ввод букв в консоли на C++15.05.2011, 14:21. Показов 35911. Ответов 20
Метки нет (Все метки)
Здравствуйте, сижу за С++ не много, так что не очень в нем разбираюсь.
Столкнулся вот с проблемой запрета букв, пишу, что то типа калькулятора. И возникла серьезная проблема: при вводе случайно, или специально, приложение дает ошибку - и программа закрывается. Так вот как запретить ввод символов и букв, или что бы при нахождении символов и букв кидало повтор ввода... ? Слышал о "isdigit()", но не знаю как его сюда засунуть...
0
|
15.05.2011, 14:21 | |
Ответы с готовыми решениями:
20
Как реализовать запрет на ввод в консоли? Запрет на ввод букв Запрет на ввод букв/цифр Запрет на ввод русских букв, написанных на клавишах нижнего ряда |
40 / 40 / 12
Регистрация: 06.01.2011
Сообщений: 90
|
|
15.05.2011, 17:23 | 2 |
щас напишу))
0
|
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
|
|
09.10.2012, 17:34 | 3 |
Так и не написали код, можете дописать кто?
Позарез нужно!
0
|
167 / 166 / 46
Регистрация: 10.10.2010
Сообщений: 725
|
|
09.10.2012, 17:44 | 4 |
После того как вводите вставьте например конструкцию вида
if(isdigit(x)) - если число if(!isdigit(x)) - если НЕ число т.е вы вводите что-то и сразу проверяете на число,если нет то выводите ошибку и все.
1
|
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
|
||||||
09.10.2012, 17:50 | 5 | |||||
0
|
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
|
||||||
09.10.2012, 17:50 | 6 | |||||
отлично, всё просто и понятно, ставлю +.
Только теперь проблема развивается далее: нужно дурака-пользователя, который ввёл "нецифру", вернуть обратно, к тому месту где он вводит значение. Такая конструкция циклится:
0
|
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
|
||||||
09.10.2012, 17:55 | 7 | |||||
никогда не делайте
main всегда должна возвращать int - код ошибки писал в текстовом редакторе - возможно ошибки... Можно красивее сделать, но я не помню наизусть всех функций =) Добавлено через 2 минуты isdigit() проверяет не всё что ввели на число, а только один символ.
0
|
167 / 166 / 46
Регистрация: 10.10.2010
Сообщений: 725
|
|
09.10.2012, 17:59 | 8 |
а вы сделайте так
Пока введена НЕ цифра снова спрашивать ввод этого же числа,а если введено число,то продолжать выполнение программы
0
|
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
|
||||||
09.10.2012, 18:06 | 9 | |||||
Такая конструция естественно будет циклится.
Если вы просите запихнуть в переменную типа, допустим float строку... то есть что-то где есть не цифры, на самом деле в буфере ввода так и останется эта строка... cin >> вернёт ошибку и не заберёт то что лежало в буфере. Если вы это дело зацикливаете - то каждый раз cin будет пытаться считать одну и ту же строку - и каждый раз FAIL... Добавлено через 3 минуты Добавлено через 16 секунд Допустим такая программа приведёт в бесконечному циклу, если вы введёте "A"
0
|
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
|
||||||
09.10.2012, 18:07 | 10 | |||||
нет, через
Так нам от него уйти и надо... есть соображения?
0
|
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
|
|
09.10.2012, 18:18 | 11 |
Вы попробуйте сделать как я написал вам - только добавьте условие выхода из while(1)
Добавлено через 14 секунд я же написал код уже. Сначала считываем строку - там могут быть и цифры и буквы. Потом проверяем - если все символы в строке цифры - то конвертируем в число
0
|
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
|
|||||||||||
09.10.2012, 18:20 | 12 | ||||||||||
Простите, я слоупок и недавно (с 1го сентября начал спешно изучать с++), насколько я знаю у нас цикл while имеет конструкцию:
0
|
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
|
|||||||||||
09.10.2012, 18:25 | 13 | ||||||||||
у меня нету while(!isdigit)
У меня есть цикл for который просто пробегается по всей строке и проверяет на то есть ли в ней что-то кроме цифр. Если нет то конвертируем строку в число.
Нупишите лучше там где у меня while(1) вот это
0
|
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
|
||||||
09.10.2012, 18:41 | 14 | |||||
спасибо, понял, теперь уже видимо крайняя проблема - записать строку с клавиатуры
на это (комментами выделил) ругается компилятор:
0
|
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
|
|
09.10.2012, 18:43 | 15 |
подключите
#include <string>
0
|
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
|
||||||
09.10.2012, 18:54 | 16 | |||||
Подключил, не мой сегодня день...:
Код
Program: ....exe File: f:\dd\vctools\crt_bld\self_x86\crt\src\isctype.c Line: 56 Expression: c >= -1 && c <= 255 For information on how your program can cause an assertion failure, see the Visual C++ documentation on asserts. (Press Retry to debug the application) Кликните здесь для просмотра всего текста
0
|
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
|
|
09.10.2012, 18:56 | 17 |
подключили
#include <cctype> или #include <ctype.h> ?
0
|
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
|
|
09.10.2012, 19:00 | 18 |
0
|
3 / 3 / 1
Регистрация: 13.03.2011
Сообщений: 114
|
|
09.10.2012, 19:02 | 19 |
Выложите ваш код полностью без мзменений... чтобы не писать 1000 раз - посмотрю где ошибка, запущу Студию
0
|
104 / 15 / 3
Регистрация: 29.11.2010
Сообщений: 335
|
||||||
09.10.2012, 19:17 | 20 | |||||
Самый изначальный исходник : задача по семинару (сам первокур)
0
|
09.10.2012, 19:17 | |
09.10.2012, 19:17 | |
Помогаю со студенческими работами здесь
20
Запрет на ввод символов в консоли Запрет ввода букв в консоли Запрет на ввод букв Запрет ввод букв Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |