2017-09-11 17 views
1

10進数を2進数に変換する簡単なプログラムがあります。私はプログラムを実行するときにエラーは出ませんが、私は単一の疑問符を取得します。私は "00101"のような値のセットを取得する必要があります私は同様に文字列を返す関数を使用しようとしています。ここに私のコードは、C++疑問符出力

#include <iostream> 
using namespace std; 
#include <string> 

string convert(int num) 
{ 
    string binary; 
    int remainder; 
} 

すべてのアイデア? 助けてくれてありがとう

+0

コード 'return binary;' while'は最初のループで戻ります。なぜそれをやっているの? – aghilpro

+0

申し訳ありませんが、私は問題がどこにあるのか把握しようとしていました。私はそれを削除しようとしましたが、私は同じ問題を抱えています。 – CuriousCoder97

+0

整数値を文字列に変換せずに文字列に代入しようとしています。これが主な問題です。私はそれを修正した後、あなたのコードに他の論理エラーを修正できると信じています。 :) –

答えて

3

このコードにはいくつかの問題があります。まず、文字列binary=という符号を使用して、binary = remainderという符号を割り当てます。あなたがおそらく書くことを意図したものはbinary += remainderで、余りを文字列に追加します。

第2の問題はその行にもあります。 string::operator=string::operator+=の両方にcharがかかるオーバーロードがあります。これらのオーバーロードは、intを渡すときに呼び出されます。文字列はアスキー値が0または1の文字に設定されています。疑問符文字はあなたが探している文字ではありません。 std::to_stringを使用すると、intを簡単に文字列に変換できます。または、書式設定を何らかのレベルで制御する必要がある場合は、this answerのようにstd::ostringstreamを使用できます。

つまり、binary = remainder;binary += std::to_string(remainder)に変更します。

第3の問題:whileループ内にreturn文があります。関数はループの1回の反復の後で返されます。numの大きさに関係なく、この関数は戻ります。そのreturn文を削除して、convert関数の最後に1つしかないようにします。

-1

コードには基本的な問題があります。 whileループは、値を返すときに1回だけ反復します。 binaryValueを毎回剰余と連結し、ループの外に戻す必要があります。 そして私はロジックをチェックしていないので、チェックしてください。