|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Я хочу запретить ввод букв. Как это сделать? |
|
C/C++ - Я хочу запретить ввод букв. Как это сделать?
|
Пользователь Сообщения: 147 |
Профиль | Отправить PM | Цитировать Я хочу запретить ввод букв. Как это сделать?
гетч не предлагать хочется без гетча |
|
Отправлено: 21:33, 09-06-2008 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать DENoszone, с циклами знакомство есть?
Вот почитать на досуге А. Нейбауэр. Моя первая программа на C/C++ ГЛАВА 9 ЦИКЛЫ, подтянуть матчасть. Drongo, нет это не из С/С++ , верное замечание . Я про Cишную do ... while, обозвал её Pascalевской repeat. А почему этого не заметил автор топика? Автор публикации прибегает к этой ассоциации и вводит переменную repeat к циклу for. Я когда писал предыдущий пост, мысленно был далеко от С, но близко к циклам и к ассоциативному repeat. |
Отправлено: 03:52, 12-06-2008 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать знаком с циклами...вот попробуйте кто то сдеклать..у меня тупо вылетает...зависает и все такое..
|
Отправлено: 08:57, 12-06-2008 | #12 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать Вот и отлично, тогда не составит большого труда перенести этот код на циклы.
Для кода, представленного в 6м посту нужно внести следующие изменение. #include <stdio.h> int main(int argc, char* argv[]) { int i; StartAgaine: printf("\nHi! Please enter the NUMBERS only "); if ((scanf("%d",&i))!=0) { printf("\n Thanks! You enter number %d",i); return 0; } else { fflush(stdin);/*пояснения ниже по посту*/ goto StartAgaine; } } Указанные вылеты - это проблемы компилятора: значения после ввода всё ещё остаётся в буфере. И соответственно у пользователя никто не будет ничего спрашивать. Всё это будет выглядеть как повисшие приложение, которое надоесть ОС и она предложить, или самостоятельно прибьёт его. Тут два варианта или сменить компилятор, который до сих пор не озвучен в теме, или чистить буфер - fflush(stdin) после ввода в scanf, когда попадаем на ситуацию с вводом не чисел. В указанной мной выше по теме ссылке это объясняется, а в этой главе более детально рассмотрено. |
Отправлено: 02:10, 13-06-2008 | #13 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать visual studio 5
ок спасибо попробую |
Отправлено: 09:15, 13-06-2008 | #14 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать спасибо действует...долго пытался понять что такое stdin ...это какой то файл буфера обмена?
|
Отправлено: 20:14, 13-06-2008 | #15 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать Да, можно и так сказать. Дословный перевод "потоко приёмник".
Вот больше информации stdin, stdout, stderr (Англ.), относится и к компилятору С входящему в visual studio 5. |
Отправлено: 20:21, 13-06-2008 | #16 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать о кстати...раз я уже тут...хочу чтоб ы русские буквы отображал..
|
Отправлено: 20:23, 13-06-2008 | #17 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать Такой вопрос уже рассматривали в нескольких темах. ...проблемы в консоле с русским Из среде тоже варианты доступны - расписаны здесь Русские символы в Visual С++ , возможно и в Visual Studio 5 такое есть. Ещё пару вариантов, с повторами, здесь Как сделать так,чтобы проги на С++ понимали русский язык? А здесь даже пример набрали Русские текст в консольных приложениях C++ Если возникнут сложности, по этому вопросу, то тогда стоит отписаться в одной из этих тем, в зависимости от выбранного способа, ибо это уже |
Отправлено: 21:17, 13-06-2008 | #18 |
Пользователь Сообщения: 147
|
Профиль | Отправить PM | Цитировать на счет ввода...ещё желательно что бы пробелы тоже считало как за символы.
можете это дописать? |
Отправлено: 22:37, 13-06-2008 | #19 |
Ветеран Сообщения: 3320
|
Профиль | Отправить PM | Цитировать Пробелом разделяется ввод переменных в scanf. Разве отказаться от использования scanf.
Если нужно ввести два или несколько чисел, я так понимаю для этого пробел требуется, тогд: или организовать цикл с вводом в scanf, или захват сразу несколько переменных одним scanf: scanf("%d %d %d...",&a,&b,&c,...) Исходя из поставленной темы, ещё вопрос что больше усложнит прогу и нагрузит пользователя: ввод через цикл по одному числу, с бранью на каждом этапе ввода если вводит символы , или несколько переменных в одну строчку, с бранью если хоть одна из переменных окажется не числом. |
Отправлено: 23:03, 13-06-2008 | #20 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Как сделать запрет ввода букв в поле для ввода input | zvezda_t | Вебмастеру | 2 | 28-12-2009 15:52 | |
Драйвер - Как запретить (сделать невозможным!) установку новых драйверов ? | softer111 | Microsoft Windows Vista | 3 | 23-08-2009 23:04 | |
Ввод ключа после установки ОС.. Как это сделать? | DooD | Автоматическая установка Windows 2000/XP/2003 | 24 | 08-11-2007 10:41 | |
как это сделать? | yanvlad | Защита компьютерных систем | 9 | 03-05-2006 13:36 | |
Как это сделать... | bake-rolls | Видео и аудио: обработка и кодирование | 10 | 11-06-2005 20:42 |
|