c++实现的任意进制数转十进制数算法

来源:互联网 发布:网站连接数据库的函数 编辑:程序博客网 时间:2024/06/06 01:13
#include <iostream>#include <cctype>using namespace std;int pow(int a,int b){    int ans=1;    while(b--)        ans*=a;    return ans;}int radix1(string &a,int n){    int ans=0;    for(int i=0;a[i];i++)    {        if(isdigit(a[i])) ans=ans*n+a[i]-'0';        else if(isupper(a[i])) ans=ans*n+a[i]-'A'+10+1;        else if(islower(a[i])) ans=ans*n+a[i]-'a'+10+26+1;    }    return ans;}int radix2(string &a,int n){    int ans=0,ans0,len=a.size();    for(int i=len-1;i>=0;i--)    {        if(isdigit(a[i])) ans0=a[i]-'0';        else if(isupper(a[i])) ans0=a[i]-'A'+10+1;        else if(islower(a[i])) ans0=a[i]-'a'+10+26+1;        ans+=ans0*pow(n,len-i-1);    }    return ans;}void welcome(){    cout<<"\t\t\t\t测试进制转换"<<endl;    cout<<"\t\t\t\t\t\tBy:sdk2   QQ:469656392"<<endl<<endl<<endl;}int main(){    welcome();    while(1)    {        int n;        cout<<"输入进制(n≤62) ";        cin>>n;        cout<<"\t"<<"输入一个"<<n<<"进制的数 ";        string a;        cin>>a;        cout<<"\t"<<"该数等于十进制的 "<<endl;;        cout<<"\t"<<radix1(a,n)<<" (算法1)"<<endl;        cout<<"\t"<<radix2(a,n)<<" (算法2)"<<endl<<endl<<endl;    }    return 0;}
0 0
原创粉丝点击