Я работаю над приложением C ++, чтобы преобразовать двоичные числа в десятичные числа - PullRequest
1 голос
/ 20 февраля 2020

Я работаю над приложением C ++, чтобы преобразовать двоичные числа в десятичные числа, и в настоящее время у меня есть работающее приложение, но проблема возникает сейчас, когда оно должно иметь промежуточные результаты.

Поскольку я знаю разговор на бумаге, и я знаю основы C ++, я не думал, что это будет очень сложно, но мне нужна помощь, мне не нужно, чтобы вы написали это для меня, мне нужен кто-то, кто поможет мне правильно понять направление, так что я могу решить это самостоятельно. Промежуточные результаты должны быть примерно такими, если я преобразую 1100 в десятичное число:

--------------- 
0 * 2⁰ = 0
0 * 2¹ = 0
1 * 2² = 4
1 * 2³ = 8
----------------- 

, что в итоге составит 12 (8 + 4 + 0 + 0 = 12)

код пока можно найти здесь: https://paste.ubuntu.com/p/fP2GfT5Pzq/ и ниже

#include <iostream>
#include <cmath>

using namespace std;

int binary_to_decimal(long long);

int main()
{
    long long number;
    cout << "Please enter the Binary you wish to convert: " << endl;
    cin >> number;

    cout << "In binary : '" << number << "' In decimal: '" << binary_to_decimal(number) << "'" << endl;
}

int binary_to_decimal(long long number)
{
    int decimal_number = 0, i = 0, remainder;
    while (number != 0)
    {
        remainder = number % 10;

        // Number = number divided by then
        number /= 10;

        // decimal_number = decimal_number + remainder to the power of 2
        decimal_number += remainder * pow(2, i);
        ++i;
    }
    return decimal_number;
}

Надеюсь, вы можете помочь:)

1 Ответ

0 голосов
/ 20 февраля 2020

Если вы просто хотите напечатать промежуточные результаты, то вы очень близки. Поскольку вы очень близки, единственный совет, который я могу вам дать: вам нужно напечатать материал внутри этого while l oop. Вот код, вам не нужно смотреть на него, если вы не хотите:)

cout << "---------------" << endl;
while (number != 0)
{
    remainder = number % 10;

    number /= 10;

    int digit = remainder * pow(2,i);
    decimal_number += digit;

    cout << remainder << " * (2^" << i << ") = " << digit << endl;
    ++i;
}
cout << "---------------" << endl;
...