int menu() { int op; printf("**** PILHAS ****\n\n"); printf("Escolha uma das opcoes\n"); printf("1.Empilhar\n"); printf ("2. Converter para binário \n"); printf("3.Sair\n"); printf("Opcao: "); scanf("%d",&op); return op; }// fim menu
void DecBin(pilha1 *p, int valor) { Pilha_Construtor(p); int x; if (valor >= 2) { do{ x = valor % 2; Pilha_Push(p, x); valor =valor / 2; } while (valor >= 2); }
x = valor % 2; Pilha_Push(p, x);
int tam = p->Topo;
for (int i = 0; i <= tam; i++) { printf (" %d ", Pilha_Pop(p)); } }
main() {
pilha1 pi; Pilha_Construtor(&pi); int valor,op;
do {
op = menu(); switch(op) { case 1: printf ("Valor a empilhar: "); scanf ("%d",&valor); if(Pilha_Push(&pi,valor)==1) printf ("Valor %d empilhado!", valor); else printf ("Pilha cheia!"); break;
Pergunta
Amanda Ferreira
Alguém poderia me ajudar? Estou com um trabalho de Estrutura de dados para fazer, mas estou tendo muita dificuldade...
Eu tentei fazer, mas não consigo concluir :/
Implemente uma função DecBin que faça uso da estrutura de pilha para efetuar a conversão de um valor decimal para binário.
#include<stdio.h>
#include<stdlib.h>
#define MAXTAM 1000
typedef struct pilha1
{
int Pilha [MAXTAM];
int Topo;
}pilha1;
void Pilha_Construtor(pilha1*p)
{
p->Topo = -1; //porque 0 é uma posição no vetor
}
int Pilha_Vazia(pilha1*p) //bool valor booleano, verdadeiro ou falso
{
if (p->Topo==-1)
return 0;
else
return 1;
}
int Pilha_Push (pilha1*p, int valor) //Inserir
{
if (p->Topo==MAXTAM-1)
{
return 0;
}
else
{
p->Topo++;
p->Pilha[p->Topo] = valor;
return 1;
}
}
int Pilha_Pop (pilha1*p, int valor) //Desempelhar, retirar elemento
{
if (p->Topo==MAXTAM-1 )
{
return -1;
}
else
{
valor==p->Pilha[p->Topo];
p->Topo--;
return p->Pilha[p->Topo+1];
}
}
int menu()
{
int op;
printf("**** PILHAS ****\n\n");
printf("Escolha uma das opcoes\n");
printf("1.Empilhar\n");
printf ("2. Converter para binário \n");
printf("3.Sair\n");
printf("Opcao: ");
scanf("%d",&op);
return op;
}// fim menu
void DecBin(pilha1 *p, int valor)
{
Pilha_Construtor(p);
int x;
if (valor >= 2)
{
do{
x = valor % 2;
Pilha_Push(p, x);
valor =valor / 2;
} while (valor >= 2);
}
x = valor % 2;
Pilha_Push(p, x);
int tam = p->Topo;
for (int i = 0; i <= tam; i++)
{
printf (" %d ", Pilha_Pop(p));
}
}
main()
{
pilha1 pi;
Pilha_Construtor(&pi);
int valor,op;
do
{
op = menu();
switch(op)
{
case 1: printf ("Valor a empilhar: ");
scanf ("%d",&valor);
if(Pilha_Push(&pi,valor)==1)
printf ("Valor %d empilhado!", valor);
else
printf ("Pilha cheia!");
break;
case 2:
break;
case 3: printf("Saindo....\n");
break;
default: printf("Opcao invalida...");
}
getch();
system("cls");
while(op!=2);
}
}
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.