Почему мой десятичный в двоичный вывод не обратится? - PullRequest
0 голосов
/ 04 декабря 2018

Я делаю простое десятичное преобразование в двоичное с использованием цикла while, и я понял, что мой вывод из цикла необходимо обратить вспять, что я и сделал, создав поток строк, а затем переместив сгенерированный int в поток строк, который затемпреобразует его в строку, а затем меняет порядок, в котором строка получает правильное двоичное значение ... но когда я на самом деле запускаю код, перед всем появляется случайный 1 или 0 ...

#include <iostream>
#include <sstream>
#include <algorithm>

int main() {
    std::stringstream ss;
    int decimal;
    int binary;
    std::cout<< "\n Please enter decimal value: ";
    std::cin >> decimal;
    std::cout << "\n The binary equivalent of " << decimal << " is ";
    while(decimal > 0 ) {
        binary = decimal % 2;

        decimal/= 2;

        std::cout << binary;

    }
    ss << binary;
    std::string binary_string = ss.str();
    std::reverse(binary_string.begin(), binary_string.end());
    std::cout << binary_string;
}

Например, если я введу 11, я получу это:

Please enter decimal value: 11

The binary equivalent of 11 is 11011

Для 12:

Please enter decimal value: 12

The binary equivalent of 12 is 00111

Ответы [ 2 ]

0 голосов
/ 04 декабря 2018

Дополнительный бит поступает из

ss << binary;
string binary_string = ss.str();
reverse(binary_string.begin(), binary_string.end());
cout << binary_string;

после цикла.binary будет содержать 1 или 0, и его преобразование в строку и обращение к нему даст вам то же самое.Вам нужно переместить ss << binary; в цикл, чтобы он содержал все двоичные цифры, которые вы генерируете.

0 голосов
/ 04 декабря 2018

Есть две проблемы.

  1. Строка ss << binary должна быть помещена в цикл

  2. Вы должны удалить cout << binary изпетля

Это будет выглядеть так

int decimal;
int binary;
cout<< "\n Please enter decimal value: ";
cin >> decimal;
cout << "\n The binary equivalent of " << decimal << " is ";
while(decimal > 0 ) {
    binary = decimal % 2;

    decimal/= 2;
    ss << binary;

}

string binary_string = ss.str();
reverse(binary_string.begin(), binary_string.end());
cout << binary_string;

}
...