#include
#define TAM 40
using namespace std;
void empilha(int p[], int &t, int v);
int desempilha(int p[], int &t, int &v);
int main()
{ float n;// para possibilitar a entrada de número maior do que o inteiro permite
int num, resto, pilha[TAM],sinal,topo=-1; //Inicialização da pilha através de topo=-1
system("color 2f");
cout<<"\n##########################################################";
cout<<"\n### ###";
cout<<"\n### Converte Numero da base decimal para base binaria ###";
cout<<"\n### ###";
cout<<"\n##########################################################\n";
cout<<"\nDigite numero positivo ate 2147483520. Qualquer outro, sai: ";
cin>>n;
if(n > 2147483520 || n <-2147483520 font="">-2147483520>
exit(0);//Limita intervalo de inteiro no Dev-Cpp, embora seja maior, mas
else
num=(int)n;//converte real para inteiro
while(num>=0 )
{
do //inicio do trecho que empiha os restos que irão gerar o número binário
{
resto= num%2;
empilha(pilha,topo, resto);
num/=2;
}while(num > 0);//fim do trecho de empilhamneto
cout<<"\nConvertido para binario: ";
sinal=desempilha(pilha, topo,resto);//inicio do trecho que desempilha todos
while(sinal == 1)//os restos que irão exibir o número binário
{
cout<
sinal=desempilha(pilha, topo,resto);
}//Fim do trecho de desempilhamento
topo=-1;
cout<<"\n\nDigite numero positivo ate 2147483520. Qualquer outro, sai: ";
cin>>n; if(n > 2147483520 || n <-2147483520 dev-cpp="" exit="" font="" no="" permitido="" ximio="">-2147483520>
else num=(int)n;
}
cout<<"\n\n";
system("pause");
}
void empilha(int p[], int &t, int v)
{
if(t==TAM-1)//Este teste não é necessário porque já limitei a entrada
cout<<"\nATENCAO. Pilha Cheia\n";// Mantive para usar o mesmo trecho
else
{
t++; //atualiza o topo
p[t]=v; // pilha recebe valor
}
}
int desempilha(int p[], int &t, int &v)
{
if(t == -1)
return 0;
else
{
v=p[t];//guarda o valor do topo
t--; //atualiza o topo
return 1;
}
}
#define TAM 40
using namespace std;
void empilha(int p[], int &t, int v);
int desempilha(int p[], int &t, int &v);
int main()
{ float n;// para possibilitar a entrada de número maior do que o inteiro permite
int num, resto, pilha[TAM],sinal,topo=-1; //Inicialização da pilha através de topo=-1
system("color 2f");
cout<<"\n##########################################################";
cout<<"\n### ###";
cout<<"\n### Converte Numero da base decimal para base binaria ###";
cout<<"\n### ###";
cout<<"\n##########################################################\n";
cout<<"\nDigite numero positivo ate 2147483520. Qualquer outro, sai: ";
cin>>n;
if(n > 2147483520 || n <-2147483520 font="">-2147483520>
exit(0);//Limita intervalo de inteiro no Dev-Cpp, embora seja maior, mas
else
num=(int)n;//converte real para inteiro
while(num>=0 )
{
do //inicio do trecho que empiha os restos que irão gerar o número binário
{
resto= num%2;
empilha(pilha,topo, resto);
num/=2;
}while(num > 0);//fim do trecho de empilhamneto
cout<<"\nConvertido para binario: ";
sinal=desempilha(pilha, topo,resto);//inicio do trecho que desempilha todos
while(sinal == 1)//os restos que irão exibir o número binário
{
cout<
sinal=desempilha(pilha, topo,resto);
}//Fim do trecho de desempilhamento
topo=-1;
cout<<"\n\nDigite numero positivo ate 2147483520. Qualquer outro, sai: ";
cin>>n; if(n > 2147483520 || n <-2147483520 dev-cpp="" exit="" font="" no="" permitido="" ximio="">-2147483520>
else num=(int)n;
}
cout<<"\n\n";
system("pause");
}
void empilha(int p[], int &t, int v)
{
if(t==TAM-1)//Este teste não é necessário porque já limitei a entrada
cout<<"\nATENCAO. Pilha Cheia\n";// Mantive para usar o mesmo trecho
else
{
t++; //atualiza o topo
p[t]=v; // pilha recebe valor
}
}
int desempilha(int p[], int &t, int &v)
{
if(t == -1)
return 0;
else
{
v=p[t];//guarda o valor do topo
t--; //atualiza o topo
return 1;
}
}
Comentários
Postar um comentário