Помощь - Поиск - Пользователи - Календарь
Полная версия: строки, С
Форум «Всё о Паскале» > Delphi, Assembler и другие языки. > Другие языки
Tan
Всем привет - я хочу следующее : Вводится символ, если это 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);
volvo
case 51,52,53 : //3, 4, 5
blink.gif Ты думаешь, это - вариант для 3-х символов? Сомневаюсь... Есть в С такая операция - "запятая". Она возвращает только последний результат, так что приведенный выше фрагмент аналогичен:

case 53 :


Чтобы сделать то, что ты задумал -
case 51:
case 52:
case 53: // 3, 4, 5
, тогда в этой метке будут обрабатываться все 3 символа...
Tan
Спасибо, это учту на будущее, это всё эхо паскаля smile.gif А в остальном что не так ?
volvo
Лишние переменные и строки кода... В частности, 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);
...
Tan
Действительно, надо по максимуму брать от языка, спасибо!
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.