• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

capzulu

duvida em listas dentro de listas

1 mensagem neste tópico

boas pessoal,

tenho a seguinte duvida em listas ligadas ....

tenho estas estruturas

typedef struct obj1 resposta, *presposta;
struct obj1{
char cod[15], respostas[5];
float cotacao;
presposta prox;
};

typedef struct obj teste, *pteste;
struct obj{
int cod, ano, cotacao[5];
char resposta[5];
presposta respostas;
pteste prox;
};

tenho a seguinte chamada da funcao no main:

if((i=procura_disciplina(disc,n_disc))!=-1)
     adiciona_resposta(disc[i].testes);

a variavel disc é um array de estruturas

e a função chamada é a seguinte:

void adiciona_resposta(pteste p){
presposta novo;
int c_t;

printf("Introduza o codigo do teste: ");
scanf("%d",&c_t);
while((p!=NULL) && (p->cod!=c_t))
	p = p->prox;
if(p!=NULL){
	novo = malloc(sizeof(resposta));
	if(novo == NULL){
		printf("Erro na requisição de memoria\n");
		return;
	}
	fflush(stdin);
	printf("Cod: ");
	gets(novo->cod);
	novo->cotacao=50;
	novo->prox = p->respostas;
	p->respostas = novo;
	printf("Resposta adicionada\n");
	printf("Cod: %s  Cot: %.1f",p->respostas->cod,p->respostas->cotacao);
	system("pause");
}
}

depois tenho uma chamada a esta função:

if((i=procura_disciplina(disc,n_disc))!=-1)
     lista_por_disciplina(disc[i].testes);

a função é esta:

void lista_por_disciplina(pteste p){
presposta aux;

printf("Listagem das respostas\n\n");
while(p!= NULL){
	printf("Teste codigo n.%d\n",p->cod);
	aux = p->respostas;
	while(aux!=NULL){
		printf("\tCod: %d\n\tCotacao: %d\n",aux->cod,aux->cotacao);
		aux = aux->prox;
	}
	p = p->prox;
}
system("pause");
}

o problema é que quando chamo a função lista_por_disciplina ela vai-me mostrar valores incorrectos, ou seja, lixo.

Alguem me pode dizer onde está o problema?

abraços

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora