Jump to content
Fórum Script Brasil
  • 0

Dúvida em exercicio em C Pilha


Amanda Ferreira
 Share

Question

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 to comment
Share on other sites

0 answers to this question

Recommended Posts

There have been no answers to this question yet

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      149.6k
    • Total Posts
      646.2k
×
×
  • Create New...