Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.11.2011, 18:06   #1
Super_Hornet
Новичок
Джуниор
 
Регистрация: 02.11.2011
Сообщений: 1
По умолчанию СИ Проверка того что каждый символ во входной строке является цифрой

int a;
printf("Vvedite chislo: ");
scanf("%d",&a);
while(a>10 || a<0)
{
printf("\nNepravilnoye chislo!");
printf("\nVvedite chislo: ");
scanf("%d",&a);
}

Вот кусок кода. Необходимо, чтобы программа проверяла что введенное число лежит в диапазоне от 0 до 10 и если вводишь букву или что-то еще выводила сообщение об ошибке, а я когда ввожу букву у меня программа циклится (я использовал isdigit). Мне сказали что-то про строки. Но все что я не пробую (изменять формат на %s или int на char) не могу довести до конца. Изучаю язык с нуля - в нашем распоряжении книги - я читаю, но сдать-то надо завтра. Как сделать чтобы программа не циклилась? Заранее спасибо.
Super_Hornet вне форума Ответить с цитированием
Старый 03.11.2011, 10:20   #2
rrrFer
Санитар
Старожил
 
Аватар для rrrFer
 
Регистрация: 04.10.2008
Сообщений: 2,577
По умолчанию

по условию вводится строка, у вас где объявлена строка?
хотя бы так:
Код:
char s[25];
когда считываете строку используйте модификатор %s
организуете цикл по строке и проверяете что-то типа if(s[i]<'0' || s[i] >'9')

Если же попробовать продолжить ваше решение, то как-то так:
Код:
#include <conio.h>

int main() {
	char c;

	while( 1 ) {
		c = getche();
		if( c < '0' || c > '9' )
			break;
	}
	putch( '\n' );
	if( 13 == c )
		putch( 'y' );
	else
		putch( 'n' );
	getch();


	return 0;
}
rrrFer вне форума Ответить с цитированием
Старый 03.11.2011, 10:32   #3
Abstraction
Старожил
 
Аватар для Abstraction
 
Регистрация: 25.10.2011
Сообщений: 3,178
По умолчанию

Цитата:
и проверяете что-то типа if(s[i]<'0' || s[i] >'9')
А ещё можно вспомнить о существовании функции isdigit(). Обратите внимание, что Ваш метод работает только в том случае, если символы '0', '1', ..., '9' идут в кодовой странице подряд и именно в таком порядке.
Abstraction вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Записи - "бьет" ли карта k1 карту k2, с учетом того что масть m является козырной. makarevich Общие вопросы Delphi 2 21.06.2011 13:38
Каждый символ string в ComboBox1 ? newprog12 Помощь студентам 1 24.01.2010 16:38
Удвоить каждый символ в строке мария2507 Microsoft Office Excel 7 22.12.2009 13:40
выписать каждый 5-символ StillFree Microsoft Office Word 23 25.03.2009 22:03