Ir para conteúdo
Fórum Script Brasil

X-Tudo

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que X-Tudo postou

  1. 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:
×
×
  • Criar Novo...