1
resposta

Algoritmo decimal para binario em C++

Fala galera, beleza? Estou fazendo um exercício de conversão de decimal para binario, no entanto tenho enfrentado algumas dificuldades. O programa ja faz a conversão para base 2, no entanto, é necessário inverter a ordem em que os número aparecem na tela (lê se da direita para esquerda, o algoritmo esta mostrando da esquerda para direita), e mais uma coisa, quando certos número são inseridos, um número não desejado aparece: '4196992' (aparentemente eles aparecem quando os números inseridos são de 9 a 15)

#include <iostream>
using namespace std;
int main ()
{
 int z{0},x,i,b[8];
 cin>>x;
 while(x!=1)
 {
 if(x%2==0)
 {
    b[z]=0;
    x/=2;
    z=z+1;

 }
 else
 {
    b[z]=1;
    x=(x-1)/2;
    z=z+1;

 }
 }
    b[z]=x%2;
    z+=1;
    while (z<8){
        z+=1;
        b[z]=0;

    }
    for(i=0;i<8;i++)
    {
        cout<<b[i]<<endl;
    }

return 0;}
1 resposta

Olá Tiago,

Eu fiz uma outra implementação, fiz um pouco na correria, espero que esteja tudo funcionando direitinho.

#include <iostream>
using namespace std;
int main ()
{
    int x,i,b[8];
    cin>>x;

    for(i == 0; i <= 7 ; i++){

        if(x >= 1){
            b[i] = (x%2);
            x /= 2;
        }
        else{
            b[i] = 0;
        }
    }

    for(i=7;i>=0;i--)
    {
        cout<<b[i];
    }

    return 0;
}

Fazia muito tempo que não via C++ espero que tenha ficado tudo certo com a sintaxe, no teste que fiz funcionou mas teve um warning na compilação.

Verifica se o problema que estava acontecendo para você continua acontecendo.

Espero ter ajudado.