Здравствуйте Dima_, Вы писали:
D>Здравствуйте, люди добрые!
D>У меня вот такая вот задачка.
D>Есть число неограниченной длинны т.е. в int не всегда можно запихнуть. Число представленно массивом int*. Каждый элемент в массиве определяет значение разрядя (в определенной системе счисления) соответствущего индексу этого элемента. Массив оканчивается элементом со значением -1. Например 7D009AF в 16-ой системе будет {15,10,9,0,0,14,7,-1}. Массив может быть любой длинны.
D>Нужно перевести это число в другую систему счисления и записать в такой же массив.
D>Основания систем счислений в исходном числе и ответе могут быть любые от 2 до 256.
D>Тут основная проблема в том что это число в int не всегда можно зписать т.к. оно очень большое. По той же пречине не всегда получается записать в int n-ный элемент массива умноженный на основание системы счисления в степени n (n теоретически может быть любая).
D>Тут нужен оригинальный алгоритм
.
Вот тебе стандартный алгоритм перевода числа в другую систему счисления, в котором нет ничего оригинального:
1) Представляешь новое основание в текущей системе счисления (например, 10 в в 16-ричной — это 0A).
2) Делишь свое число на новое основание (например, в столбик). Остаток от деления — последняя цифра числа в новой СС.
3) Если частное не 0, то переход к 2 с частным в качестве нового делимого.
Все тупо для безобразия. Деление в столбик, надеюсь, написать сумеешь (есть вроде и более продвинутые алгоритмы деления, но я с ними не знаком)?