Код: Выделить всё
#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;
}
нужен ввод систем с клавиатуры