привет всем!
есть алгоритм перевода из десятичной системы счисления в другую:
Код:
void convert(int num, int system, char* out)
{
int curc = 0, n;
char* str = new char[80];
cout << pow(num, 1.0/system) << endl;
while (num > 0)
{
str[curc++] = ((n = (num % system)) < 10) ? n + '0' : n + 'a' - 10;
num /= system;
}
curc--;
for (int i = 0; i <= curc; i++)
out[i] = str[curc - i];
out[++curc] = '\0';
delete str;
}
при переводе остатки от деления сохраняются в строку, но в обратном порядке, поэтому их нужно инвертировать. для этого выделяется дополнительная строка str.
кто-нибудь подскажет как оптимизировать алгоритм по времени выполнения?
собственно, я думаю надо убрать строку str, а остатки записывать сразу в out в обратном порядке. тут возникает проблема определения длины строки с числом в новой системе счисления.