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 –