Advertisement
Guest User

Untitled

a guest
Dec 17th, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.44 KB | None | 0 0
  1. #include <iostream>
  2.  
  3. using namespace std;
  4.  
  5. //Функция возвращающая переведенное число
  6. char* ConvertCC(char* x,int fromCC,int toCC){
  7.     //Таблица символов исходного числа для
  8.     //определения их порядкового номера
  9.     char *abc="0123456789ABCDEFGHIJKLMNOPQESTUVWXYZ";
  10.     //Промежуточная строка
  11.     char buf[255]={0};
  12.     //Результирующая строка
  13.     char *result;
  14.  
  15.     int i //Это количество символов в начальном числе
  16.        ,k //Это будет порядковым номером очередного символа в входном числе
  17.        ,ten=0 //Это будет его аналог в 10-чной системе
  18.        ,stp=1; //А это просто степень для перевода в 10-чную
  19.     //Узнаем сколько символов во входящем числе
  20.     for(i=0;x[i];i++);
  21.     //А потом с последнего символа начинаем переводить
  22.     for(;i;i--){
  23.         //Выясняем его порядковый номер
  24.         for(k=0;abc[k]!=x[i-1] && k<36;k++);
  25.         //Умножаем его на степень, прибавляя к результирующему числу
  26.         // в 10-тиричной системе
  27.         ten+=k*stp;
  28.         //И повышаем степень для следующего символа
  29.         stp*=fromCC;
  30.     }
  31.     //После обратной формулой
  32.     k=0;
  33.     while(ten){
  34.      //Получаем цифры числа в нужной системе
  35.      i=ten % toCC;
  36.      //И пишем их в буфер
  37.      buf[k++]=abc[i];
  38.      //Деля число на основание результирующей системы
  39.      ten/=toCC;
  40.     }
  41.     //Поскольку число у нас в буффере верх ногами
  42.     //Создаем результирующую переменку
  43.     result=new char[k+1];
  44.     //В которую пишем результат в его естесственном виде
  45.     for(i=0;k;i++) result[i]=buf[--k];
  46.     //Маркеруем конец строки нулем
  47.     result[i]=0;
  48.     //И возвращаем
  49.     return result;
  50.  
  51. }
  52.  
  53. int main()
  54. {
  55.     char* s=ConvertCC("B12",20,16);
  56.     cout<<s;
  57.     delete s;
  58.     cin.get();
  59.     return 0;
  60. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement