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

Ajuda! Terminar um codigo DOIDO


X-Tudo

Pergunta

Objetivo: Construir um programa em c/c++ que utilize 3 pilhas contendo estruturas do tipo Pessoa. As pessoas são informadas pelo usuário do programa e devem ser armazenadas na pilha 1 ou na pilha 2 criada pelo programa. O seu objetivo é criar uma função chamada Hanói que recebe três pilhas como parâmetro e retorne através da terceira pilha, todos os dados das pilhas 1 e 2 de forma que os dados da pilha 3 devem estar em ordem alfabética. O programa pode utiliza

pilha estática ou pilha dinâmica.

struct Pessoa 
{ 
  Int ID; 
  char nome[100]; 
} 

meu codigo, sou noob não consegui colocar num CODEBOX:
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#define MAX 100

typedef int tipochave;
typedef int apontador;
typedef struct {
         int ID;
        char nome[100];
             }tipoPessoa;    
typedef struct{
        tipochave chave;
        tipoPessoa pessoa;
              }tipoItem;
        
typedef struct{
        tipoItem item[MAX];
        apontador topo;
              }tipoPilha;
  
  
  void fpVazia (tipoPilha *pilha){
     pilha->topo=0;
                                 }
                                 
    int vazia(tipoPilha pilha){
         return(pilha.topo == 0);
                              }
                              
   void empilha(tipoItem x, tipoPilha *pilha)
         {
              if(pilha->topo==MAX)
              {
                printf("\n Erro PILHA cheia\n");
              }
              else
              {
                  pilha->topo++; 
                  pilha->item[pilha->topo-1] = x;
              }
         }
         
         void desempilha(tipoPilha *pilha, tipoItem *x)
         {
              if(vazia(*pilha))
              {
                printf( "\n Erro PILHA vazia\n");
              }
              else
              {
                  *x= pilha->item[pilha->topo-1];
                  pilha->topo--; 
              }
         }
         
         void HANOI (tipoPilha pilha1, tipoPilha pilha2, tipoPilha pilha3)
         {
              tipoItem item,x;
              int i;
              int v1,v2,v3;
              v2=pilha2.topo;
              for(i=0;i<=v2;i++)
              {
              desempilha(&pilha2,&item);
              empilha(item,&pilha1);
              }
              v1=pilha1.topo;
             for (i=0;i<=v1;i++)
              {
                 desempilha(&pilha1,&item);
                 empilha(item,&pilha3);
              }
                  
                 if(pilha3.topo==0)
                  {
                       empilha(item,&pilha3);
                  }
                       else if(&pilha3.topo>&pilha1.topo)
                                         {
                                         desempilha(&pilha3,&item);
                                         empilha(item,&pilha2);
                                         desempilha(&pilha1,&item);
                                         empilha(item,&pilha3);
                                         desempilha(&pilha2,&item);
                                         empilha(item,&pilha3);
                                         }
                                         else{
                                              desempilha(&pilha1,&item);
                                              empilha(item,&pilha3);
                                              }
                 
                                               
              for(i=0;i<=v1;i++)
              {
                                        printf("%s\n",pilha3.item[i].pessoa.nome);
                                        
                                        }}
              
         
        int main() {
            
            int x=0, i;
            tipoPilha pilha1, pilha2, pilha3;
            tipoItem item;
        
            fpVazia(&pilha1);
            fpVazia(&pilha2);
            fpVazia(&pilha3);
            while (x!=4)
            {
                  printf("\n 1- Colocar elemento na primeira pilha \n 2- Colocar elemento na segunda pilha \n 3- HANOI \n 4-Sair\n");
                  scanf("%d",&x);
                                    
            switch (x)
            {
                   case 1:
                        printf("\n Digite o seu nome\n");
                        scanf("%s", &item.pessoa.nome);
                        /*printf("\n Digite o seu ID");
                        scanf("%d",&item.pessoa.ID);*/
                        empilha(item, &pilha1);
                   break;
                   case 2:
                         printf("\n Digite o seu nome\n");
                        scanf("%s", &item.pessoa.nome);
                        /*printf("\n Digite o seu ID");
                        scanf("%d",&item.pessoa.ID);*/
                        empilha(item, &pilha2);
                   break;
                   case 3:
                        HANOI(pilha1,pilha2,pilha3);
                        break;
            }}
            
   
                system ("PAUSE");
                return 0;
                
                }

Se alguém conseguir implementar um algoritmo pra função hanoi será de grande ajuda. :rolleyes:

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,4k
×
×
  • Criar Novo...