Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Я хочу запретить ввод букв. Как это сделать?

Ответить
Настройки темы
C/C++ - Я хочу запретить ввод букв. Как это сделать?

Пользователь


Сообщения: 147
Благодарности: 0

Профиль | Отправить PM | Цитировать


Я хочу запретить ввод букв. Как это сделать?
гетч не предлагать хочется без гетча

Отправлено: 21:33, 09-06-2008

 

Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


DENoszone, с циклами знакомство есть?
Вот почитать на досуге А. Нейбауэр. Моя первая программа на C/C++ ГЛАВА 9 ЦИКЛЫ, подтянуть матчасть.

Drongo, нет это не из С/С++ , верное замечание . Я про Cишную do ... while, обозвал её Pascalевской repeat.
А почему этого не заметил автор топика?
Автор публикации прибегает к этой ассоциации и вводит переменную repeat к циклу for.
Я когда писал предыдущий пост, мысленно был далеко от С, но близко к циклам и к ассоциативному repeat.
Это сообщение посчитали полезным следующие участники:

Отправлено: 03:52, 12-06-2008 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Пользователь


Сообщения: 147
Благодарности: 0

Профиль | Отправить PM | Цитировать


знаком с циклами...вот попробуйте кто то сдеклать..у меня тупо вылетает...зависает и все такое..

Отправлено: 08:57, 12-06-2008 | #12


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


visual studio 5
ок спасибо попробую

Отправлено: 09:15, 13-06-2008 | #14


Пользователь


Сообщения: 147
Благодарности: 0

Профиль | Отправить PM | Цитировать


спасибо действует...долго пытался понять что такое stdin ...это какой то файл буфера обмена?

Отправлено: 20:14, 13-06-2008 | #15


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Да, можно и так сказать. Дословный перевод "потоко приёмник".
Вот больше информации stdin, stdout, stderr (Англ.),
относится и к компилятору С входящему в visual studio 5.

Отправлено: 20:21, 13-06-2008 | #16


Пользователь


Сообщения: 147
Благодарности: 0

Профиль | Отправить PM | Цитировать


о кстати...раз я уже тут...хочу чтоб ы русские буквы отображал..

Отправлено: 20:23, 13-06-2008 | #17


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать



Такой вопрос уже рассматривали в нескольких темах.
...проблемы в консоле с русским
Из среде тоже варианты доступны - расписаны здесь Русские символы в Visual С++ , возможно и в Visual Studio 5 такое есть.
Ещё пару вариантов, с повторами, здесь Как сделать так,чтобы проги на С++ понимали русский язык?
А здесь даже пример набрали Русские текст в консольных приложениях C++
Если возникнут сложности, по этому вопросу, то тогда стоит отписаться в одной из этих тем, в зависимости от выбранного способа, ибо это уже
Это сообщение посчитали полезным следующие участники:

Отправлено: 21:17, 13-06-2008 | #18


Пользователь


Сообщения: 147
Благодарности: 0

Профиль | Отправить PM | Цитировать


на счет ввода...ещё желательно что бы пробелы тоже считало как за символы.
можете это дописать?

Отправлено: 22:37, 13-06-2008 | #19


Ветеран


Сообщения: 3320
Благодарности: 916

Профиль | Отправить PM | Цитировать


Пробелом разделяется ввод переменных в scanf. Разве отказаться от использования scanf.
Если нужно ввести два или несколько чисел, я так понимаю для этого пробел требуется, тогд: или организовать цикл с вводом в scanf, или захват сразу несколько переменных одним scanf:
scanf("%d %d %d...",&a,&b,&c,...)
Исходя из поставленной темы, ещё вопрос что больше усложнит прогу и нагрузит пользователя: ввод через цикл по одному числу, с бранью на каждом этапе ввода если вводит символы , или несколько переменных в одну строчку, с бранью если хоть одна из переменных окажется не числом.
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:03, 13-06-2008 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Я хочу запретить ввод букв. Как это сделать?

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как сделать запрет ввода букв в поле для ввода 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




 
Переход