- ベストアンサー
n進数を10進数に変換するプログラムがわかりません
- 整数n(2<=n<=16)とn進数の数字列digitsを与えると10進数に変換して表示するプログラムを作成したいです。
- プログラムの中で使用するbase2dec関数についても間違っていると感じています。
- n進数から10進数への変換方法は理解していますが、具体的な実装がわからないです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
★アドバイス >for(i=0; i=digits.size()-1; i++){ ↑ この行がおかしいです。 間違い⇒for(i=0; i=digits.size()-1; i++){ 正しい1⇒for(i=0; i<=digits.size()-1; i++){ 正しい2⇒for(i=0; i<digits.size(); i++){ ※回答者 No.1 さんのアドバイス通りです。 >void関数の中、特に計算方法が間違っていると思うのですが、なにがいけないかわかりません。 ↑ 『dec=(x*n);』ここが違う気がします。 『dec=(dec*n+x);』とすればいいと思いますけど。 >ちなみにn進数から10進数に直す方法は理解しています。 ↑ 理解しているのなら『dec=(dec*n+x);』となると思いますが…。 その他: >if(cin >> digits[i++]){ … } ↑ このifブロック内は必要なのか? どういう意味。 >int value = dec; ↑ 最後のこの行は意味ないね。 『value』を参照してないし。 戻してないし。 そもそも dec が『参照』ですよ。 http://next1.msi.sk.shibaura-it.ac.jp/MULTIMEDIA/CPPPUBLISH/node8.html→『ポインタと参照』 このリンクを読みましょう。 ・以上。あと16進などのA~Fは大文字専用ですね。小文字だと上手く変換できませんよ。
その他の回答 (1)
- koko_u_
- ベストアンサー率18% (459/2509)
>for(i=0; i=digits.size()-1; i++) 終了条件で代入してどうする?? i == digits.size()-1 でもモチロン間違ってますが。 それ以降のコードは読んでません。
お礼
そりゃそうですよね。よくよく見返したら変なのは当然でした・・・ 教えてくれてありがとうございました。
お礼
的確なアドバイスありがとうございます。自分の間違いがよくわかりました。変なミスばっかで申し訳なかったです。参考URLのページもとても参考になりました。ありがとうございました。