Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.77
requester
0 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 40
#1

Проверка вводимых данных. - C++

12.12.2009, 22:44. Просмотров 1685. Ответов 4
Метки нет (Все метки)

предполагается, что функция будет проверять, что ввел пользователь, и, если он ввел не натуральное число заранее заданного диапазона, требовать повторного ввода.
однако, если вводить буквы, то цикл выполняется только один раз.
вопрос: почему? :-(


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
int entcontrol(int a, int b)
{
bool bl;
int i,N;
char str[20];
 
do
{
scanf("%s",str);
for(i=0;i<strlen(str);i++)
 if(!isdigit(str[i]))
{
printf("Error: wrong value\n");
bl=0;
break;
}
N = atoi(str);
bl = 1;
if(N<a || N>b) 
{
printf("Error: wrong value\n");
bl = 0;
}
}
while (!bl);
return N;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.12.2009, 22:44     Проверка вводимых данных.
Посмотрите здесь:

Проверка типа вводимых данных. C++
C++ Проверка вводимых значений
C++ Проверка вводимых символов
C++ Проверка вводимых символов
Портирование кода на С++ (проверка вводимых данных пользователем на корректность) C++
Посимвольная проверка вводимых данных C++
C++ Проверка вводимых значений
Проверка на коректность вводимых данных C++
Проверка вводимых данных C++
C++ Проверка корректности вводимых данных
C++ Проверка вводимых данных
C++ Проверка вводимых данных на соответствие типа

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Gravity
558 / 552 / 39
Регистрация: 29.01.2009
Сообщений: 1,274
12.12.2009, 23:18     Проверка вводимых данных. #2
Цитата Сообщение от requester Посмотреть сообщение
однако, если вводить буквы, то цикл выполняется только один раз.
вопрос: почему? :-(
Уж не потому ли, что при условии !isdigit(str[i]) стоит break?
requester
0 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 40
12.12.2009, 23:38  [ТС]     Проверка вводимых данных. #3
нет, не поэтому

Добавлено через 6 минут
break прерывает самый "внутренний" цикл, то есть в данном случае цикл с for.
Somebody
2781 / 1595 / 143
Регистрация: 03.12.2007
Сообщений: 4,179
Завершенные тесты: 1
13.12.2009, 00:15     Проверка вводимых данных. #4
В 18-й строке bl=1 независимо от результата проверки на цифры/нецифры.
requester
0 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 40
13.12.2009, 00:25  [ТС]     Проверка вводимых данных. #5
о, ура, спасибо, я юродивый слепец! %)
Yandex
Объявления
13.12.2009, 00:25     Проверка вводимых данных.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru