任意进制转换 (类)

#include <bits/stdc++.h>
#include <iostream>


using namespace std;




class JZZH
{
    public:
    void  getss( )
    {
       cin >>st1>>c>>d;
       /*
       strcpy(st1,str1);
       strcpy(st2,str2);
       c=a;
       d=b;
       */
    }
    int   panduan()
{
      q=strlen(st1);
      int k=1;
    for(int i=0;i<q;i++)
    {


        if(st1[i]<='9')
        {
             if((st1[i]-'0')>c-1)
            {
                cout<<"小笨蛋,你的"<<c<<"进制数输入格式不正确"<<endl;
                k=0;
             break;
            }
        }


        else
            if((st1[i]-55)>c-1)
            {cout<<"小笨蛋,你的"<<c<<"进制数输入格式不正确" ;
            k=0;
             break;
            }


    }
    return k;
}


void SJZ()
{
    int r=0;
    n=0;
    for(int i=q-1;i>=0;i--)
    {
       {if(st1[i]<='9')
        n=n+(st1[i]-48)*pow(c,r++);
       else
        n=n+(st1[i]-55)*pow(c,r++);
       }
    }
    cout <<n<<endl;


}


void RYJZ()
{
  char arr[37]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','I','S','T','U','V','W','X','Y','Z'};
  int brr[100]={0};
  int m=0;
  int h;
    while(n!=0)
 {
   h=n%d;
   n=n/d;
   brr[m++]=h;
 }
 int k=m;


 for(int i=m-1;i>=0;i--)
 {
     st2[i]=arr[brr[i]];
 }
for(int i=k-1;i>=0;i--)
cout <<st2[i];








}




    private:
     char st1[20];
     char st2[20];
     int  c;
     int  d;
     int  q;
     int  n;








};








int main()
{
    JZZH s;


    s.getss();
    if(s.panduan())
   {
       s.SJZ();
       s.RYJZ();
   }


    //cout << "Hello world!" << endl;
    return 0;
}

猜你喜欢

转载自blog.csdn.net/qq_41199502/article/details/80341708