Показать сообщение отдельно
Старый 02.12.2007, 00:00   #1
ViP
 
Аватар для pluton
 
Пол:Мужской
Регистрация: 23.02.2007
Сообщений: 1,027
Репутация: 560
По умолчанию Оптимизация алгоритма

привет всем!
есть алгоритм перевода из десятичной системы счисления в другую:
Код:
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 в обратном порядке. тут возникает проблема определения длины строки с числом в новой системе счисления.
__________________
THE TRUTH IS OUT THERE
pluton вне форума
 
Ответить с цитированием Вверх
 
Время генерации страницы 0.02114 секунды с 10 запросами