Изход за преобразуване от десетична към двоична система

Какво не е наред с моя код, някой да ми помогне, моля. Това е преобразуване на десетична в двоична система. Според моя код изходът ще бъде 2 за 10, 3 за 11, но изходът винаги добавя последната стойност в края, както за 3 показва 1110, добавете предишния изход. Какво трябва да направя сега ? помогнете ми, моля?

#include<iostream>
#include<stdio.h>
using namespace std;

int main(){

    long int decimalNumber,quotient;

    int binaryNumber[100],i=0,j;

    printf("Enter any decimal number: ");

    //scanf_s("%ld",&decimalNumber);
    while(scanf_s("%ld",&decimalNumber)==1)
    {

            quotient = decimalNumber;

            while(quotient!=0){
             binaryNumber[i++]= quotient % 2;
             quotient = quotient / 2;
           }

           printf("Equivalent binary value of decimal number %d: ",decimalNumber);

           for(j = i -1 ;j>= 0;j--)
               printf("%d",binaryNumber[j]);
           printf("\n");
           printf("Enter any decimal number: ");
    }
    return 0;
}

person MD MAHBUB ALAM    schedule 14.06.2013    source източник
comment
Опитахте ли да го отстраните?   -  person MarsRover    schedule 14.06.2013


Отговори (1)


Трябва да инициализирате i в началото на всеки цикъл

while(scanf_s("%ld",&decimalNumber)==1)
{
    i = 0;

Без това ще добавяте всяко ново число в края на последното, като повтаряте, докато не напишете след края на binaryNumber.

person simonc    schedule 14.06.2013
comment
Радвам се, че помогна. Ако проблемът ви вече е разрешен, не се колебайте да приемете отговора ми :-) - person simonc; 14.06.2013