Десятичное представление в BASE-26

Я написал код для преобразования десятичного числа в соответствующее алфавитное представление.

Примеры:

1: A
2: B
.
.
.
26: Z
27: AA
.
.
.
703: AAA

Вот мой подход:

void print(int n)
{
    if( n > 0 )
    {
        n--;
        print( n / 26 );
        printf( "%c", ( n % 26 ) + 'A' );
    }
}

Приведенный выше код работает правильно. Могу ли я оптимизировать его с точки зрения читабельности?
Каков наилучший способ сделать это?

Теперь я хочу изменить приведенный выше код для работы следующим образом:

0: A
1: B
.
.
.
25: Z
26: AA
.
.
.
702: AAA

Очевидный подход заключается в добавлении 1 к десятичному входному числу и передаче его функции в исходном коде. Как я могу изменить первую программу, чтобы она работала во втором случае, не добавляя 1?

1 ответ

Решение

После некоторых наблюдений я попробовал приведенный ниже код и он работает для Case: 2,

void print(int n)
{
    if(n < 26)
        printf("%c", n + 'A');
    else
    {
        print(n / 26 - 1);

        print(n % 26);
    }
}

Смотрите вывод здесь.

Другие вопросы по тегам