2014-12-26 2 views
0

Для того, чтобы преобразовать заданное число в двоичную я написал этот кодBinary Преобразование в C++

//Binary conversion 

int num,count=0; 

int bi[15]; 
cout<<"Enter number"; 
cin>>num; 
while(num>=1){ 
    bi[count]=num%2; 
    num=num/2; 
    count++; 
} 


for(int i=0;i<=count;i++){ 
    cout<<bi[count-i]; 
} 

Но ответ wrong.It дает -85993460 на фронте.

Если я хочу преобразовать 10, результат будет -859934601010.

Может кто-то пожалуйста, указать на то, что случилось с этим кодом

+1

@Lashane Sure о 'я <= count'? –

+0

@ πάνταῥεῖ нет, должно быть просто '<' –

ответ

2

Когда i равен нулю, то выражение count-i это одна позиция после последней записи массива; это неопределенное поведение, поэтому может быть напечатано произвольное число, например -85993460, или программа может вылететь из строя.

Чтобы напечатать массив в обратном направлении, используйте bi[count-1-i] вместо этого, и в конце цикла при достижении подсчета:

for(int i=0 ; i != count ; i++) { 
    cout<<bi[count-1-i]; 
} 
+0

Спасибо. Когда я попытался найти ошибку, я проверил код до num = 1, но потом забыл увеличить счет. Вот почему я не смог найти ошибку. –

1

Ваши пределы контура выключены, по одному - петля должна быть

for(int i=1;i<=count;i++){ 
    cout<<bi[count-i]; 
}