Всем привет - я хочу следующее : Вводится символ, если это 3, 4, 5 - то выводим на экран, если нет, то не выводим. Если после того как нажали 3, нажали 4 или 5 то меняем значение на нововведённое (аналогично со всеми). Что - то кажется мне, что я с символом окончания строки что - то напортачил. Буду рад, если подкорректируете кусочек кода.
int len;
char number[2];
len = 0;
if ( ( ch = getch() ) != 0 )
switch ( ch )
{
case 51,52,53 : //3, 4, 5
{
if ( len != 1 )
{
len++;
number[1] = ch;
}
else {
len--;
number[1] = ch;
}
}
break;
default : break;
}
bar (600,100,620,110);
outtextxy (600, 100, number);
} while (ch != 13);
number[2] = '\0';
amount = atoi (number);
case 51,52,53 : //3, 4, 5Ты думаешь, это - вариант для 3-х символов? Сомневаюсь... Есть в С такая операция - "запятая". Она возвращает только последний результат, так что приведенный выше фрагмент аналогичен:
case 53 :
case 51:, тогда в этой метке будут обрабатываться все 3 символа...
case 52:
case 53: // 3, 4, 5
Спасибо, это учту на будущее, это всё эхо паскаля А в остальном что не так ?
Лишние переменные и строки кода... В частности, len вообще не нужна, весь фрагмент:
...
int amount, ch;
/* инициализировать number достаточно так */
char number[2] = " \0";
do {
if((ch = getch()) != 0 )
switch(ch) {
case 51: case 52: case 53 :
number[0] = ch;
break;
}
bar (600,100,620,110);
outtextxy (600, 100, number);
} while (ch != 13);
amount = atoi (number);
...
Действительно, надо по максимуму брать от языка, спасибо!