PDA

Просмотр полной версии : Домашка по С


antigo
13.04.2006, 01:46
не знаю, может надо было Это во тему для новичков, но в обшем дело в следуюшем - на курсе по С нам задали написать программу ктороя бы приняла 2 4-ех значных, положительных числа - первое Scanf в параметр типа int а потом превратить Это число в 4 цифры через пробел (например Scanf 1234 ==> Printf 1 2 3 4) с етим не было проблем (инт, делиш на 1000, %, делиш на 100, % итд...) проблема появилось со вторым 4-ех значным числом - его надо ввести 4-мя сканами в параметp типа Char а Printf должен показать 4-ех значное число(тоже не проблема final=(a-'0')*1000+(b-'0')*100...) сама проблема заключается в том что 1-ый из Этих 4-ех сканов принимает ентер который я нажимаю после ввода первого 4-ех значного числа, поетому пришлось сождавать 5-ый скан для пустого парамтра куда и пойдет ентер - сам вопрос: можно ли Эту фигню решить более деликатно -но создавая 5-го скана???

ЕЖ
13.04.2006, 02:32
int i;
char a,b,c,d;
scanf("%d\n%c%c%c%c",&i,&a,&b,&c,&d);
Вводить так: 1234[Enter]5678
В i пойдет 1234, в a,b,с,d пойдет соответственно 5,6,7,8. Символы 5678 вводятся без пробелов.

antigo
13.04.2006, 11:10
второе число я должен ввести 4-мя отдельными сканами (ето они четко отметили) - то есть минимум должно быть 5 сканов

int i;
char a,b,c,d;
scanf("%d",&i);
scanf("%c",&a);
scanf("%c",&b);
scanf("%c",&c);
scanf("%c",&d);

ЕЖ
13.04.2006, 12:07
Смысл не в количестве scanf, а в символе \n который я тебе указал. Хочешь, пиши 5 scanf, но первый напиши так: scanf("%d\n",&i)

GOre01
13.04.2006, 12:56
Можно еще так:

int i;
char a,b,c,d;
scanf("%d", &i);
fflush(stdin); // очищает поток
scanf("%c%c%c%c",&a,&b,&c,&d);


Вообще, полезно перед любым сканом делать очистку потока, IMHO.