Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- //Функция возвращающая переведенное число
- char* ConvertCC(char* x,int fromCC,int toCC){
- //Таблица символов исходного числа для
- //определения их порядкового номера
- char *abc="0123456789ABCDEFGHIJKLMNOPQESTUVWXYZ";
- //Промежуточная строка
- char buf[255]={0};
- //Результирующая строка
- char *result;
- int i //Это количество символов в начальном числе
- ,k //Это будет порядковым номером очередного символа в входном числе
- ,ten=0 //Это будет его аналог в 10-чной системе
- ,stp=1; //А это просто степень для перевода в 10-чную
- //Узнаем сколько символов во входящем числе
- for(i=0;x[i];i++);
- //А потом с последнего символа начинаем переводить
- for(;i;i--){
- //Выясняем его порядковый номер
- for(k=0;abc[k]!=x[i-1] && k<36;k++);
- //Умножаем его на степень, прибавляя к результирующему числу
- // в 10-тиричной системе
- ten+=k*stp;
- //И повышаем степень для следующего символа
- stp*=fromCC;
- }
- //После обратной формулой
- k=0;
- while(ten){
- //Получаем цифры числа в нужной системе
- i=ten % toCC;
- //И пишем их в буфер
- buf[k++]=abc[i];
- //Деля число на основание результирующей системы
- ten/=toCC;
- }
- //Поскольку число у нас в буффере верх ногами
- //Создаем результирующую переменку
- result=new char[k+1];
- //В которую пишем результат в его естесственном виде
- for(i=0;k;i++) result[i]=buf[--k];
- //Маркеруем конец строки нулем
- result[i]=0;
- //И возвращаем
- return result;
- }
- int main()
- {
- char* s=ConvertCC("B12",20,16);
- cout<<s;
- delete s;
- cin.get();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement