2013-06-14 3 views
0

Что не так с моим кодом, кто-нибудь мне помог PLZ. Это десятичное двоичное преобразование. Согласно моему коду, выход будет равен 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; 
} 
+1

Отступ ваш код. –

+1

Вы пытались его отладить? – MarsRover

ответ

5

Вы должны инициализировать i в начале каждого цикла

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

Без этого, вы будете добавлять каждый новый номер до конца последнего, повторяя, пока вы не напишете после конца от binaryNumber.

+0

спасибо, чувак. Да, это работает. Глупая ошибка :) –

+0

Рад, что помогло. Если ваша проблема решена, не стесняйтесь [принять] (http://meta.exechange.com/q/5234) мой ответ :-) – simonc

Смежные вопросы