switch(c) {
case 'A': return "00";
}
Строки в switch
Вообщем задали в универе написать небольшой кодер-декодер текста. кодер очень легко сделал через switch, а вот декодер не хочет через то что один символ кодируется двумя сиволами, напр. 'A' == "00".
Собственно как можно сделать тот декодер через switch а не через if?
и еще вопрос:
если у меня структура switch такова:
Код:
там нужно дописовать после ретурна break; ????
Спасибо за ответы.
Цитата: coirius
кодер очень легко сделал через switch
То есть, Вы сделали количество case, равным количеству символов? :) Через массив не пробовали?
Цитата:
Собственно как можно сделать тот декодер через switch а не через if?
Даже если Вы через 50 switch сделаете, выглядеть это будет не лучше, чем 50 if. Пройдитесь по всей строке, преобразуйте "код" в число, добавьте к нему соответствующую величину, чтобы получить ASCII-код буквы.
Цитата:
там нужно дописовать после ретурна break; ????
Нет
if(c>='A' && c<='Z'){
char txt[4];
sprintf(txt, "%02d", (long)(c-'A'));
return txt;
}
Цитата: grag63
Может проще так:
if(c>='A' && c<='Z'){
char txt[4];
sprintf(txt, "%02d", (long)(c-'A'));
return txt;
}
if(c>='A' && c<='Z'){
char txt[4];
sprintf(txt, "%02d", (long)(c-'A'));
return txt;
}
Чему вы людей учите? Нельзя возвращать указатель на массив, созданный на стеке.
А для проверки на букву надо использовать функцию типа is_alpha().
А за возврат указателя - да руки оторвать.