Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Karolinne

Projeto utilizando listas

Recommended Posts

Boa noite gente,

 

Estou fazendo um trabalho da faculdade de estrutura de dados, temos que implementar utilizando listas.

O código ainda não está todo pronto, mas ta dando o seguinte erro: Quando adiciono um estado e uma cidade e aperto t chamo uma função que era para aparecer o nome do estado e da cidade, só que só ta aparecendo o nome do estado... E o nome da cidade bugado.

Se puderem ajudar agradeço.

 

 

Estrutura...

#include <stdio.h>
#include <stdlib.h>
#include "inclui.h"


void verificar();
void pesquisar();

void mostrar(PAIS principal)
{
     while(principal->prox != NULL)
     {
                           printf("%s", principal->prox->nome);
                           printf("%s", principal->prox->prim->prox->nome);
                           principal = principal->prox;
     }
}


int main()
{
    PAIS principal;
    
    principal = (PAIS) malloc(sizeof(struct estado));
    
    principal->prox = NULL;
    principal->ant = NULL;

    
    char escolha;
    
    for(;;)
    {
           fflush(stdin);
           printf("Deseja:\n\n(A)dicionar uma pessoa \n(V)erificar todas as pessoas que existem com suas cidades e estados? \n(P)esquisar por uma pessoa, estado ou cidade\n");
           scanf("%c", &escolha);
           
           switch(toupper(escolha))
           {
                                   case 'A':
                                        adicionar(principal);
                                        break;
                                   case 'V':
                                        verificar();
                                        break;
                                   case 'P':
                                        pesquisar();
                                   case 'T':
                                        mostrar(principal);
                                        break;
           
           }
    }
           
}   



void verificar()
{
     printf("OI\n");
     return;
} 

void pesquisar()
{
     printf("OI\n");
     return;
}        
       

Função Adicionar...

#include "adicionar.h"

void adicionar(PAIS principal)
{
     PAIS aux;
     
     char estado[25];
     
     char cidade[25];
     
     if((aux = (PAIS) malloc(sizeof(struct estado))) == NULL)
     {
                  printf("A memoria esta cheia");
                  return;
     }
     
     printf("Digite o nome do estado da pessoa\n");
     fflush(stdin);
     scanf("%s", estado);
     
     strcpy(aux->nome,estado);
     aux->prox = principal->prox;
     aux->ant = principal;
     
     if(principal->prox!=NULL)
          principal->prox->ant = aux;
          
     principal->prox = aux;
     
     
     
     principal->prox->prim = (CIDADE) malloc(sizeof(struct cidade));
     
     principal->prox->prim->prox = NULL;
     
     CIDADE aux2;
     
     printf("Digite o nome da cidade da pessoa\n");
     fflush(stdin);
     scanf("%s", cidade);
     
     strcpy(aux2->nome,cidade);
     aux2->ant = principal->prox->prim;
     aux2->prox = principal->prox->prim->prox;
     
     if(principal->prox->prim->prox!=NULL)
          principal->prox->prim->prox->ant = aux2;  
          
     principal->prox->prim->prox = aux2;
     
     printf("%s", principal->prox->prim->prox->nome);
     

     
                  
                  
   
     return;
} 
        
       

Adicionar h...

#include "inclui.h"

void adicionar(PAIS principal);

Inclui.h

#include <stdlib.h>
#include <stdio.h>
#include <string.h>

typedef struct estado *estadop;
typedef struct cidade *cidadep;
typedef struct pessoa *pessoap;

struct estado
{
       char nome[25]; 
       estadop prox; // Ponteiro para o proximo estado
       estadop ant; // Ponteiro para o estado anterior
       cidadep prim; // Ponteiro para a primeira cidade ordenada pelo alfabeto
};

struct cidade
{
       char nome[25];
       cidadep prox; // Ponteiro para a proxima cidade
       cidadep ant; // Ponteiro para a cidade anterior
       pessoap prim; // Ponteiro para a primeira pessoa ordenada pelo alfabeto 
};

struct pessoa
{
       char nome[25];
       pessoap prox;
       pessoap ant;
};

typedef estadop PAIS;

typedef cidadep CIDADE;

Compartilhar este post


Link para o post
Compartilhar em outros sites
Quando adiciono um estado e uma cidade e aperto t chamo uma função que era para aparecer o nome do estado e da cidade, só que só ta aparecendo o nome do estado... E o nome da cidade bugado.

 

Poderia ter colado a execução p/ ajudar...Nem sempre tem compilador por perto. Como por exemplo agora, já que estou atualizando o sistema.

 

 

Não use fflush(stdin). Tem um tópico pinado sobre isso nos artigos.

 

Tá faltando break num case.

 

Acho que o while da exibição tá errado... Nunca vai mostrar o último elemento da lista.

 

No main você não verifica se a memória foi alocada.

 

Ao invés de for(;;) você pode usar while(1)

 

Funções void não precisam de return.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.