1
int inputNumber=0;
int divisionStore=0,modStore=0;
vector<int> mainVector;

cout << "\nEnter a Number to Convert to Binary.\n" << endl;

cin >> inputNumber;

do
{
    modStore=inputNumber%2;
    inputNumber=inputNumber/2;
    mainVector.push_back(modStore);

}while(inputNumber!=1);

for (int i=0;i<mainVector.size();i++)
{
    cout<<endl<<mainVector[i]<<endl;
}

論理エラーがあるようですが、何が問題なのかわかりませんか? 最後の数値をプッシュする前にループが終了するように見えるため、プログラムは正しい変換を出力しません。

4

6 に答える 6

0

Seams は非常に複雑で非効率的な方法です (誤解していなければ)。おそらく、/、% などではなく、ビット操作演算子を探しているでしょう。本当にベクトルに貼り付けたい場合は、次のようにする必要があります。

while (inputNumber) {
  mainVector.push_back(inputNumber & 1);
  inputNumber >>= 1;
}

ただし、これはベクトルの先頭に最下位ビットを配置することに注意してください。これは、あなたが望むものではないかもしれませんが、コードが同様にやろうとしていることのように見えます.

于 2013-05-19T08:08:32.257 に答える