R进制转10进制
作者:
erbaoerbao
,
2024-03-18 20:34:59
,
所有人可见
,
阅读 11
#include<iostream>
#include<string>
#include<cmath>
using namespace std;
const int N=50;
char a[N];
double zh(char s[],int b)
{
double n=0;//应该定义小数类型。
int cf=0;//cf初始值应该是0,因为一开始是0次方。
string str(s);
int sy=str.find(".");//不能直接写sy.find("."),因为sy还没有初始值。
string q=str.substr(0,sy);
string h=str.substr(sy+1);//sy应该加一。
for(int i=q.size()-1;i>=0;i--)//初始值是最后一个字符的索引,我忘记减一了。
{
if(q[i]>='0' && q[i]<='9')
n+=(q[i]-'0')*pow(b,cf);
else
n+=(q[i]-'A'+10)*pow(b,cf);//忘记加十了。
cf++;
}
cf=-1;
for(int i=0;i<h.size();i++)
{
if(h[i]>='0' && h[i]<='9')
n+=(h[i]-'0')*pow(b,cf);
else
n+=(h[i]-'A'+10)*pow(b,cf);//忘记加十了。
cf--;
}
return n;//应该返回n。
}
int main()
{
int m;
cin >> a >> m;
cout << zh(a,m) << endl;
return 0;
}