2016-04-12 6 views
0

私はC++で新しく、簡単な問題があります。私は10進数の結果に私の番号(1011)を変更する必要があります。 Cmathが含まれています。私は捕虜メソッドを使用しようが、私の出力を見てください。私のpowメソッドが動作しないのはなぜですか?

コード:

char *b = "1011"; 
int maxPow = 3; 
for (int i = 0; i < 3; ++i) { 
    cout << b[i] * pow(b[i], (maxPow - i)/1.0) << endl; 
} 

出力:

5.7648e+006 
110592 
2401 

私はこのようにそれを作ってみる:

result = 1*2^3 + 1*2^2 + 0*2^1 + 1*2^0 

問題は私の配列ですか?どこ?できれば助けてください。

+0

'biff'と' bang'も実装する必要があります。 –

+0

あなたのコードを元に戻すことができます。その上で起こっていることが原因で問題が表示され、関連するソリューションが表示されることがあります。 – pyInTheSky

答えて

2

これで実行している問題は、ASCII値をループしてascii値を乗算することです。 int digit = b[i]-'0';のようなものを試してから、変数桁にb [i]を代入してください。

'0'を減算すると、与えられた文字からゼロのascii値を減算することを意味します。したがって、 '0'から '0'のASCII値を減算すると、数値が0になります。アスキー '1'からascii '0'を減算し、数値1を返します。

- http://www.asciitable.com/index/asciifull.gifより良い理解を得る。

もう少し簡単なデモができます。ちょうどcout b [i]です。値48または49は、ascii 0とascii 1の数値なので、表示されます。

+0

@pylnTheSkyありがとうございました:) –

+0

あなたは大歓迎です – pyInTheSky

関連する問題