powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / проверка числа на символ
5 сообщений из 5, страница 1 из 1
проверка числа на символ
    #34030139
Kronit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Здравствуйте. У меня такой вопрос: пользователь вводит число и если оно не из нужного диапозона или не число, то необходимо сделать это заново.
вот как это смортится у меня:

while (1)
{
printf ("vvedite sist s4isl isto4nik:");
scanf ("%d", &s1);
if (s1>16 || s1<2) printf("Error! must 2-16 \n");
else break;
}

но тут у меня тока проверка на диапозон, а не на символы. Когда пользователь вводит символ, то получается зацикливание. Как мне сделать проверку? ведь вводимое число типа int, а не char. Если бы вводили символ, то моно проверить по диапозону аски таблицы, а как поступить с числовым вариантом???
Заранее спасибо.
...
Рейтинг: 0 / 0
проверка числа на символ
    #34030271
--null--
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
imho плохо пользоваться scanf-ом.
надо всегда позволять пользователю вводить текстовые данные, а потом уже их проверять и преобразовывать.
...
Рейтинг: 0 / 0
проверка числа на символ
    #34030277
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да нет, пользоваться scanf-ом вполне нормально. Только надо не забывать stdin сливать :)
Добавь непосредственно перед scanf'ом fflush(stdin); и все будет зашибись без всяких аски таблиц.
...
Рейтинг: 0 / 0
проверка числа на символ
    #34030507
onstat-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KronitЗдравствуйте. У меня такой вопрос: пользователь вводит число и если оно не из нужного диапозона или не число, то необходимо сделать это заново.
вот как это смортится у меня:

while (1)
{
printf ("vvedite sist s4isl isto4nik:");
scanf ("%d", &s1);
if (s1>16 || s1<2) printf("Error! must 2-16 \n");
else break;
}

но тут у меня тока проверка на диапозон, а не на символы. Когда пользователь вводит символ, то получается зацикливание. Как мне сделать проверку? ведь вводимое число типа int, а не char. Если бы вводили символ, то моно проверить по диапозону аски таблицы, а как поступить с числовым вариантом???
Заранее спасибо.

Почитайте про результат который возвращает scanf.
В Вашем случае если она вернет не 1, то строка ввода содержала
что то, что не может быть преобразовано в в тип который имеет Ваша переменная s1.
...
Рейтинг: 0 / 0
проверка числа на символ
    #34030583
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White OwlДа нет, пользоваться scanf-ом вполне нормально. Только надо не забывать stdin сливать :)
Добавь непосредственно перед scanf'ом fflush(stdin); и все будет зашибись без всяких аски таблиц.

Да, блин, хитрый подводный камень.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / проверка числа на символ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]