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;
}
似乎有一个逻辑错误,但我找不到它的错误?程序没有打印正确的转换,因为它似乎循环结束才能推送最后一个数字。
答案 0 :(得分:4)
我认为你需要改变:
}while(inputNumber!=1)
为:
}while(inputNumber!=0)
答案 1 :(得分:2)
答案 2 :(得分:0)
接缝是一种非常复杂和低效的方式(如果我不误解你的话)。你可能正在寻找位操作运算符,而不是/,%等。如果你真的想把它粘在一个向量中,那么应该这样做:
while (inputNumber) {
mainVector.push_back(inputNumber & 1);
inputNumber >>= 1;
}
但请注意,这会将最低有效位放在向量的开头,可能不是您想要的,但看起来它也是您的代码尝试做的。
答案 3 :(得分:0)
我回答了类似问题Here,我使用了递归函数
void decimal_to_binary(int decimal)
{
int remainder = decimal % 2;
if (decimal < 1)
return;
decimal_to_binary(decimal / 2);
cout << remainder;
}
答案 4 :(得分:0)
inputNumber%2
是最低有效位,因此向量将包含相反顺序的位。只需按相反顺序循环矢量即可。
while(inputNumber!=1)
- 您必须在inputNumber!=0
时循环播放,否则您将无法处理最后一位。
答案 5 :(得分:0)
#include<iostream>
using namespace std;
int main(){
int x,bin;
x=0 ,bin=0;
int ar[10000];
cout<<"Enter Decimal Number "<<endl;
cin>>x;
int n=0;
while(x>0){
bin=x%2;
x=x/2;
ar[n]=bin;
n++;
}
cout<<endl;
n=n-1;
for(n;n>=0;n--){
cout<<ar[n]; }
cout<<endl;
return 0;
}
/* Try this */