Advertisement
kirya_shkolnik

Untitled

Sep 25th, 2020
273
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.60 KB | None | 0 0
  1. // Just compile this projects and follow guide
  2.  
  3. #include <iostream>
  4. #include <string>
  5. #include <bits/stdc++.h>
  6.  
  7. using namespace std;
  8.  
  9.  
  10. int ToDecimal(string input, int base) // перевод из любой в 10
  11. {
  12.    
  13.  
  14.     int value = 0;
  15.     int count = 1; // n^0=1 n^1=n*base n^1=n*base*base
  16.     for(int i = input.length()-1; i >= 0; --i)
  17.     {
  18.         char c = input[i];
  19.         if(c >= '0' && c <= '9')
  20.             c -= 48;
  21.         else
  22.             c = c - 65 + 10;  
  23.         value += c * count;
  24.         count *= base; // upper
  25.        
  26.                 if(base != 10){
  27.         cout << c*count; // stylising
  28.         if (i != 0) cout << "+";} //stylising  
  29.     }
  30.      if(base != 10){
  31.     cout << "=" << value; //stylising
  32.     cout << endl << endl;} //stylising
  33.     return value;
  34. }
  35.  
  36. string FromDecimal(int value, int base) // перевод из 10 в любую
  37. {
  38.     string output;
  39.    
  40.     int temp, space = 0;  //stylising
  41.             int c = 0;    //stylising
  42.            
  43.     while(value > 0)
  44.     {
  45.         char digit = value % base;
  46.  
  47.         if(digit < 10)
  48.             digit += 48;
  49.         else
  50.             digit += 55;
  51.         output += digit;
  52.         temp = value;
  53.         int ost = value % base;
  54.         value /= base;
  55.        
  56.        
  57.        
  58. //        stylising start
  59.  
  60.         int temp1 = temp;
  61.         int temp2 = value;
  62.         int temp3 = ost;
  63.         int c1 = 0;
  64.         int c2 = 0;
  65.         if(c>0) c++;
  66.         for(;temp1>0;c++){
  67.                 temp1/=10;
  68.         }
  69.         for(;temp2>0;c1++){
  70.                 temp2/=10;
  71.         }
  72.         for(;temp3>0;c2++){
  73.                 temp3/=10;
  74.         }
  75.         for(int i=0; i<space; i++){
  76.             cout << " ";
  77.         }
  78.         cout << temp << "|" << base << endl;
  79.         for (int i=0; i<c; i++){
  80.             cout << " ";
  81.         }
  82.         cout << "|";
  83.         for (int i = 0 ; i<c1; i++) cout << "_" ;
  84.         cout << endl;
  85.                 for (int i=0; i<(c-c2); i++){
  86.             cout << " ";
  87.         }
  88.         cout << ost <<"|";
  89.         //stylising end
  90.     }
  91.     reverse(output.begin(), output.end());
  92.     cout <<endl << output;
  93.     cout << endl << endl;
  94.     return output;
  95. }
  96.  
  97.  
  98. string ConvertBase(string input, int baseFrom, int baseTo) //обьединяющая функция
  99. {
  100.     return FromDecimal(ToDecimal(input, baseFrom), baseTo);
  101. }
  102.  
  103. int main()
  104. {
  105.     string number; // строка число
  106.     int from, to; // из СС, в СС
  107.     cout << "Input number, base from, base to in the next line \n"; // крутой коммент для вам
  108.     cin >> number >> from >> to; // ввод
  109.     cout << ConvertBase(number, from, to); // ебанешься крутая функция обьединяющая  
  110. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement