Jump to content

Decimal para Binário


frm
 Share

Recommended Posts

Boas.. 🙂

É o seguinte, preciso de fazer um programa em c++ usando uma função que me pedindo um numero entre 1 e 1023 me diga qual a sua forma binária... Alguém sabe alguma maneira de resolver isto? É que eu não consigo :? ..

Obrigado...

EDIT: E já agora um que fizesse o contrário, binário para decimal...

Link to comment
Share on other sites

Boas.. 8)

É o seguinte, preciso de fazer um programa em c++ usando uma função que me pedindo um numero entre 1 e 1023 me diga qual a sua forma binária... Alguém sabe alguma maneira de resolver isto? É que eu não consigo :? ..

Obrigado...

EDIT: E já agora um que fizesse o contrário, binário para decimal...

Em príncipio ao contrário dá.

Basta isto por exemplo.

#include <iostream>
using namespace std;
int main () {
int valor = 101010101;
cout << dec << valor;
system("Pause");
return 0;
}

EDIT: OK, não deu.... :\

Acho que o conversor vai ter de ser um algoritmo baseado no que é feito à mão para determinar binário através de decimal.

Só que eu não sei como se faz à mão....senão... 😛

Link to comment
Share on other sites

Por exemplo pra passar de decimal pra binário:

Imaginando que o numero introduzido era 27. Ora bem, 27/2=13 com o resto da divisão a ser igual a 1. Depois divide-se o 13 por 2 que dá 6 com resto 1. Depois divide-se o 6 por dois que dá 3 com resto zero. Depois devide-se o 3 por dois que dá 1 com resto 1.

Então, o número 27 em formato binário é 11011.

Não sei se deu pra entender...

Link to comment
Share on other sites

deathseeker25
Por exemplo pra passar de decimal pra binário:

Imaginando que o numero introduzido era 27. Ora bem, 27/2=13 com o resto da divisão a ser igual a 1. Depois divide-se o 13 por 2 que dá 6 com resto 1. Depois divide-se o 6 por dois que dá 3 com resto zero. Depois devide-se o 3 por dois que dá 1 com resto 1.

Então, o número 27 em formato binário é 11011.

Não sei se deu pra entender...

Penso que tens aí um raciocínio correcto. Divides sempre o numero que obtens por 2, colocando no numero binário o resto dessa divisão.... 😛

Cumps

Link to comment
Share on other sites

deathseeker25
Pois, o raciocinio já está, falta-me é agora transformar isso num programa, isso é que não consigo :? ...

Pois...o grande problema da maioria dos programadores iniciantes é transformar os raciocinios na linguagem que pretendem aprender a programar.

Vai por fases: arranja solução para a primeira "pergunta" (neste caso, dividir o numero inserido por dois...) e só depois passas á segunda. Não caias no erro de querer fazer tudo de uma vez.

Não te preocupes com o numero de linhas que o programa ocupa, nem com métodos de boa programação para já. Pensas nisso depois de atingires o objectivo.

Programadores de C++ dêem ideias....

Link to comment
Share on other sites

Bem, isto fiz eu assim às três pancadas...corrijam sff se estivar mal e dêem feedback. 😛

#include <iostream>
using namespace std;
void main () {
int valor;
int teste;
int y = 0;
int resultado[2000];
cout << "Insira o valor a converter-> "; cin >> valor;
do {
	teste = (valor % 2);
	valor = (valor / 2);
	resultado[y] = teste;
	++y;
} while(valor > 1);
for (int z; z <= y; ++z)
cout << resultado[z];
cout << endl;
system("Pause");
}

EDIT: Bem, o programa tem umas falhas que não tive tempo de resolver, vou agora tratar disso.

Link to comment
Share on other sites

pronto, acho que é desta:

#include <iostream.h>
using namespace std;
void main () {
int valor;
int teste;
int y = 0;
int resultado[2000];
cout << "Insira o valor a converter-> "; cin >> valor;
while (valor >= 2) {
	teste = (valor % 2);
	valor /= 2;
	resultado[y] = teste;
	++y;
}
if (valor = 1)
 resultado[y] = 1;
for (int z; z <= y; ++z) 
	cout << resultado[z];
cout << endl;
system("Pause");
}
Link to comment
Share on other sites

Lamento, mas não tenho aqui nenhum IDE para c++.

Pequeno exemplo em java

       int valor = 20;
       int temp = 0;
       byte[] bin = new byte[128];
       String res ="";

       for (int i =0; valor>=2; i++)
       {
           temp = valor % 2;
           bin[i] = new Byte(""+ temp);
           valor = valor / 2;
           res = bin[i] + res;
       }

       res = valor + res;

       System.out.println(res);

Não se esqueçam (para quem segue o ex do vbmaster que no final têm que inverter o calculo.

Espero que ajude

Link to comment
Share on other sites

vbmaster, eu já corri o teu programa, mas quando insiro o valor a cenverter ele dá erro.. :?

se não aparecesse nada e desse logo erro eu diria que era do .h no iostream.

vê lá isso...

Link to comment
Share on other sites

Citação
Citação
vbmaster, eu já corri o teu programa, mas quando insiro o valor a cenverter ele dá erro...?

se não aparecesse nada e desse logo erro eu diria que era do .h no iostream.

vê lá isso...

...

Link to comment
Share on other sites

Podes testar isto?

#include <iostream.h>
void main () {
   int valor =0;
   int teste =0;
   int res[128];

   cout << "dec = "; 
   cin >> valor;
   

   for (int i = 0; valor>=2; i++)
   {
      res[i] = valor % 2;
      valor = valor % 2;
   }
   
   res[i] = valor;

   for (int j=i; j>0; j--)
      cout << res[j];
} 
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.