Ir para conteúdo
Fórum Script Brasil
  • 0

Dúvida em exercicio em C Pilha


Amanda Ferreira

Pergunta

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

Até agora não há respostas para essa pergunta

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.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...