#c #switch-statement
#c #switch-оператор
Вопрос:
Мое задание для моего класса — преобразовать буквы в цифры из входного файла, например, клавиатуры старого телефона. т.е. ABC равно 2, DEF равно 3 и т.д.
Итак, во входном файле один из входных 1-800-ARID
данных.
Используя switch
, я смог успешно преобразовать символы в числа, но не могу перенести 1-800
, или, скорее, я не знаю, как это сделать, или если это вообще возможно перенести.
Пока у меня есть это:
while(input.eof()){
input.get(ch);
switch (ch) {
case 'A': case 'B': case 'C': output << '2'; break;
case 'D': case 'E': case 'F': output << '3'; break;
case 'G': case 'H': case 'I': output << '4'; break;
case 'J': case 'K': case 'L': output << '5'; break;
case 'M': case 'N': case 'O': output << '6'; break;
case 'P': case 'Q': case 'R': case 'S': output << '7'; break;
case 'T': case 'U': case 'V': output << '8'; break;
case 'W': case 'X': case 'Y': case 'Z': output << '9'; break;
}
Выполнение 1-800-ARID
этого возвращает только 2743
, без префикса 1-800
.
Комментарии:
1.
switch
Будет игнорироваться все, что не является заглавной буквой. Либо добавьте acase '1':
(и'2'
… и т. Д.), Либо adefault:
для обработки других символов.2. Я не уверен, как реализовать default. Единственный способ, о котором я могу думать, это сделать «1-800-«, но разве это не будет просто печатать 1-800 — каждый раз, когда нет заглавной буквы? @dxiv
3. @learningtocode65 Вы выводите символы один за другим. Итак, если вы видите a
'1'
, то выведите a'1'
. Если вы видите a'-'
, то выведите a'-'
. Если вы видитеch
, то… вы поняли идею.4. Сделайте так, чтобы регистр по умолчанию просто печатался
ch
сам.
Ответ №1:
Вы выводите ТОЛЬКО те символы, которые конвертируете, и ничего больше. Просто добавьте default
блок к switch
блоку, чтобы вывести все остальные символы как есть.
Кроме того, ваше использование input.eof()
неверно.
Попробуйте это:
while (input.get(ch)){ // <— fixed
switch (ch) {
case 'A': case 'B': case 'C': output << '2'; break;
case 'D': case 'E': case 'F': output << '3'; break;
case 'G': case 'H': case 'I': output << '4'; break;
case 'J': case 'K': case 'L': output << '5'; break;
case 'M': case 'N': case 'O': output << '6'; break;
case 'P': case 'Q': case 'R': case 'S': output << '7'; break;
case 'T': case 'U': case 'V': output << '8'; break;
case 'W': case 'X': case 'Y': case 'Z': output << '9'; break;
default: output << ch; break; // <— add this
}
}
Комментарии:
1. На самом деле я наткнулся на это, просто повозившись с кодом / немного подумав о проблеме. Спасибо. Я все еще новичок на этом сайте, поэтому я не уверен, должен ли я @ you или нет.