Каждой букве присваивается номер, соответствующий его положению в алфавите. «А» 0 «В» 1, «с» 2 и т.д.Как рекурсивно декодировать слово с целым числом?
Все буквы в нижнем регистре
, кодирующий один непристойность является его номер.
Если кодировка для первых n-1 букв слова равна x, а кодировка для n-й буквы - m, тогда кодирование n-буквенного слова равно x * 26 + m.
Я понимаю, что логика такова:
Если слово содержит только одну букву, кодирование между 0 и 25.
Если слово содержит две буквы, а затем взять firstletter * 26 + secondletter
Если слово содержит три буквы, затем (firstletter * 26 + secondletter) * 26 + thirdletter
и так далее, пока вы не кодируются целиком.
Я не уверен, как пройти мимо базового футляра. Пожалуйста помоги!
Это то, что я до сих пор:
char print_letter(unsigned int number)
{
char c = number + 97;
if (number <= 25)
{
printf("%c\n", c);
return(c);
}
else
{
fprintf(stderr, "ERROR: print_letter: Received "
"input %d,", number);
fprintf(stderr, " between 0 and 25 expected.");
return('-');
}
}
void print_word(unsigned int number)
{
if(number <= 25)
print_letter(number);
else
{
print_letter((number/26) % 26);
print_word(number/26);
}
}
Пожалуйста, покажите нам, что вы пробовали. Переполнение стека - это вопрос и ответ, а не служба написания кода. Пожалуйста, [см. Здесь] (http://stackoverflow.com/help/how-to-ask), чтобы узнать, как писать эффективные вопросы. –
http://meta.stackoverflow.com/questions/334822/how-do-i- ask-and-answer-homework-questions – NineBerry
Измените свой вопрос, чтобы включить код как текст, а не как изображение. – Kevin