Neste post irei mostrar como converter um numero decimal para binário em C++ usando Pilha.
Muita gente que esta começando a programar em C++ tem dificuldades para trabalhar com vetores e em especial com os tipos de Estrutura PILHA ,LISTA e FILA.
Então para resolver um problema simples que é converter um numero decimal e binário usarei uma pilha assim você aprende o algorítimo pra converter aprende a converter e aprende também pilha seque o código abaixo :
Primeiro declaramos as bibliotecas e definimos a nossa constante que e nossa variável global
#include "iostream"
using namespace std;
const int MAX=10;
Agora definimos a nossa estrutura do tipo pilha temos o topo que indica posiçao do primeiro dado da pilha e o memo que o nosso dado.
struct pilha{
int topo;
int memo[MAX];
};
Agora vamos criar no função Push que pega o item e joga no topo da pilha sempre passando como referencia &
void push(pilha &P, int x){
P.topo++;
P.memo[P.topo]=x;
}
Função Pop retira o que esta no topo da pilha
int pop(pilha &P){
int aux=P.memo[P.topo];
P.topo--;
return aux;
}
Agora criamos a função que vai fazer a conversão do decimal em binário, a função vai receber a Pilha que e o tipo de estrutura que vamos utilizar o numero que o usuário vai digitar e o resto que e o resultado da divisão por 2
void transformaBi(pilha &P, int num, int &resto){
while(num!=0){ enquanto numero for diferente de 0 ira ser realizada as operações abaixo
resto=num%2; resto recebe o resto da divisao por 2
push(P,resto);push inseri o resto no topo
num=num/2; numero receve o resultado da divisão por 2 para dar continuidade a operação
}
cout<<"\n"; na mesma funçao de transformar eu coloquei pra exibir para nao ter que armazenar dados.
while(P.topo!=-1){ Enquanto topo for diferente de -1 que indica q a pilha esta vazia num vai receber o topo que e adquirido atraves da função pop e é exibido na tela.
num=pop(P);
cout<<num;
}
}
int main() { Começando nosso Main declarei pilha que nossa estutura , varias do tipo int que vao ser nosso numero e resto ultilizados pela operação e disse que nossa Pilha começa com topo -1 que indica que ela esta vazia.
pilha P;
int num,resto;
P.topo=-1;
cout<<"Entre com o numero = ";Usuário entra com o numero se o numero for igual a 0 ele pede para que o usuario digite outro numero digitado um numero acima de 0 ele ativa a funçao mandando como parametro as varias declaras P , num , resto e assim converte e exibe o numero decimal em binario.
cin>>num;
if(num==0){
do{
cout<<"\nEntre com outro numero = ";
cin>>num;
}while(num==0);
transformaBi(P,num,resto);
}
else
transformaBi(P,num,resto);
cout<<"\n"<<endl;
system ("pause");
return 0;
}
Bom pessoal espero ter ajudo ainda mais aqueles que estão começando não sei muito mais o pouco que sei compartilho através do meu BLOGGER caso tenham alguma duvida comentem postem a e e também compartilhem pois o conhecimento e para ser passado adiante.
<iframe scrolling="no" frameborder="0" src="https://coinpot.co/mine/bitcoin/?ref=B9608E233418&mode=widget" style="overflow:hidden;width:324px;height:470px;"></iframe>
<iframe scrolling="no" frameborder="0" src="https://coinpot.co/mine/bitcoin/?ref=B9608E233418&mode=widget" style="overflow:hidden;width:324px;height:470px;"></iframe>
Nenhum comentário:
Postar um comentário