Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
0 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 40
1

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

12.12.2009, 22:44. Показов 2129. Ответов 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;
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.12.2009, 22:44
Ответы с готовыми решениями:

Проверка вводимых данных
Как сделать так, чтобы при вводе символов в строку года поступления на экран появлялось...

Проверка вводимых данных
#include &lt;iostream&gt; using namespace std; int main() { double a, b, c; cout &lt;&lt;...

Проверка вводимых данных
Доброго времени суток, форумчане. Я столкнулся с такой проблемой: при введении еденицы измерения,...

Проверка вводимых данных
Подскажите, пожалуйста, как зациклить ввод данных до тех пор пока пользователь не введёт корректный...

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

Добавлено через 6 минут
break прерывает самый "внутренний" цикл, то есть в данном случае цикл с for.
0
2822 / 1631 / 252
Регистрация: 03.12.2007
Сообщений: 4,222
13.12.2009, 00:15 4
В 18-й строке bl=1 независимо от результата проверки на цифры/нецифры.
0
0 / 0 / 0
Регистрация: 23.11.2009
Сообщений: 40
13.12.2009, 00:25  [ТС] 5
о, ура, спасибо, я юродивый слепец! %)
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.12.2009, 00:25

Проверка вводимых данных
Вот часть программы int main(void) { int vop; setlocale(LC_ALL, &quot;Russian&quot;); int mas1,...

Проверка типа вводимых данных.
Собственно,как осуществить ? К примеру,здесь: int main() { int x; int y; ...

Посимвольная проверка вводимых данных
Доброго времени суток. Такая проблема: нужно запретить пользователю вводить не цифры и дробные...

Проверка корректности вводимых данных
Есть программа на проверку високосного года. Преподаватель при проверке вводит &quot;5 Аотао&quot; к...

Проверка на коректность вводимых данных
Есть такой код где данные вводятся целого типа( int x; cin &gt;&gt; x; ). Вопрос такой как проверить...

Проверка на корректность вводимых данных
В моём коде должны быть ТОЛЬКО вводимые числа от -1000 до 1000 (с плавающей точкой). Если...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

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