Извини
Delirium, уже дело принципа
Спасибо
sergvg, что проверил код. Я что-то расслабился совсем. Я исхожу из принципа, что эта буквенная система представляет собой искажённую 26-чную систему исчисления, но со старшим разрядом из 27 символов. Таким образом, в 4-значное число максимально может иметь значение 27*26*26*26 - 1. (Это не противоречит тому, что 27-разрядное с неиспользуемыми нулями, но меняет логику поиска алгоритма) Протестировал, вроде сходится
Код:
string rc2a1(int my_str_number)
{
string str;
int a=my_str_number;
// здесь исправил перепутанное местами деление и остаток,
// добавил компенсацию старшего разряда при делении 27*26*26*26 = (26 + 1)*26*26*26
// и вызов констуктора string исправил.
for(; 26<=a; str=string(1, 'A' + (a%26))+str, a=(a/26)-1) {}
return string(1, 'A' + a)+str;
}
Немного переделав цикл и собрав одинаковые действия в одно, получаем:
Код:
string rc2a1(unsigned a)
{
string str;
do {
str=string(1, 'A' + (a%26))+str;
a=(a/26)-1;
} while (a!=-1);
return str;