私はC++の割り当てを友人に手伝っています。いくつかの不可解な理由私は3と5桁の小数を入力して、私は適切な番号を取得していますベース10を選んだ-1たびのためにベースコンバータ機能の問題
#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;
}
:folowingベースコンバータ機能との問題があります。
など。
100
10
99
10000
10
9999
私は、最後の5~6時間、この機能の上に行くとデバッグコードのすべての種類を追加することが、私の利益のために私は地獄が間違っているかを把握することはできませんしてきました。
コードスタイルの備考も非常に高く評価されています。
乾杯
@livedeveloperの良い点です。はるかに読みやすい。 しかし、私は==とcompare()の間に違いは見当たりません。 戻り値をテストすることはどういう意味ですか?検証?これはタスクの要件ではありません。 フィードバックいただきありがとうございます。 –
デバッガでコードをステップ実行しようとしましたか?デバッガは、**コードが正しく動作しないときに使用する**ツールです。 –
私は再現できません。あなたの入力と私は100-10-100と10000-10-10000を得る –