0
我正在帮助一个C++作业的朋友。有一个与如下因素基地转换器功能的问题:问题与基地转换器功能
#include <iostream>
#include <cmath>
using namespace std;
int strToInt(string num, unsigned base){
int result = 0;
for (int i=0; i<num.length(); i++) {
if (num[i]>='0' && num[i]<='9')
result += (num[i]-'0')*pow(base,num.length()-i-1);
else if (num[i]>='A' && num[i]<='F')
result += (num[i]-'A'+10)*pow(base,num.length()-i-1);
else if (num[i]>='a' && num[i]<='f')
result += (num[i]-'a'+10)*pow(base,num.length()-i-1);
}
return result;
}
int main()
{
string number;
int base;
while(number.compare("exit")!=0){
cin>>number;
cin>>base;
cout<<strToInt(number,base)<<"\n\n";
}
return 0;
}
对于每一个我进入3个5位小数,并选择基地10我得到了正确数量-1时一些莫名其妙的原因。
E.g.
100
10
99
10000
10
9999
我已经打算在这个函数的最后5-6小时,加入所有类型的调试代码,但对我的好,我也弄不清到底是什么错误。
代码风格的言论也非常赞赏。
干杯
@latedeveloper关于幻数的好处。更可读。 但是我没有看到==和compare()之间的区别。 通过测试返回值是什么意思?验证?这不是任务的要求。 感谢您的反馈意见。 –
您是否尝试通过调试器逐步执行代码?当代码行为不正确时,调试器就是要使用的**工具。 –
我无法复制;与您的输入我得到100-10-100和10000-10-10000 –