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:
Pergunta
X-Tudo
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.
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
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.