Advertisement
pigg

進制轉換

Nov 17th, 2016
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.49 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5.  
  6. char radix(unsigned long long int i)
  7. {
  8.     if (i >= 10)
  9.     {
  10.         return i + 55;
  11.     }
  12.     else if (i >= 0 && i <= 9)
  13.     {
  14.         return i + 48;
  15.     }
  16. }
  17.  
  18. bool chk(unsigned long long int b, unsigned long long int a)
  19. {
  20.     while (a != 0)
  21.     {
  22.         if (a % 10 >= b)
  23.         {
  24.             return 1;
  25.         }
  26.         a /= 10;
  27.     }
  28.     return 0;
  29. }
  30. unsigned long long int true_value(unsigned long long int b, unsigned long long int a)
  31. {
  32.     unsigned long long  int c;
  33.     unsigned long long  int i = 0;
  34.     unsigned long long  int sum = 0;
  35.     while (a > 0)
  36.     {
  37.         sum += (a%10)*pow(b, i);
  38.         a /= 10;
  39.         i++;
  40.     }
  41.  
  42.     return sum;
  43. }
  44.  
  45. void convert(unsigned long long int a, unsigned long long int b)
  46. {
  47.     char c[100] = {};
  48.  
  49.     unsigned long long  int i = 0,d;
  50.     while (a > 0)
  51.     {
  52.         d = a%b;
  53.         c[i] = radix(d);
  54.         a /= b;
  55.         i++;
  56.     }
  57.     for (int i = 99; i >= 0; i--)
  58.     {
  59.         if(c[i] != 0)
  60.         cout << c[i];
  61.     }
  62. }
  63.  
  64. int main()
  65.  
  66. {
  67.     unsigned long long  int or_base, or_radix;
  68.     unsigned long long  int af_base;
  69.     cout << "輸入待轉換進制" << endl;;
  70.     cin >> or_base;
  71.     cout << "輸入待轉換值" << endl;
  72.     cin >> or_radix;
  73.     if (chk(or_base, or_radix)==1)
  74.     {
  75.         cout << "輸入錯誤" << endl;
  76.         system("PAUSE");
  77.         return 0;
  78.     }
  79.     cout <<"輸入同等於的10進位值"<< true_value(or_base, or_radix) << endl;
  80.     cout << "輸入轉換後的進制值" << endl;
  81.     cin >> af_base;
  82.     cout << "轉換後的數字為"<<endl;
  83.     convert(true_value(or_base, or_radix), af_base);
  84.  
  85.     system("PAUSE");
  86.     return 0;
  87. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement