Ir para conteúdo

Arquivado

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

Paloma

Pilhas em C

Recommended Posts

Alguém pode me ajudar? Tá dando um erro na função listar

 

ERRO: struct Sapato' has no member named 'topo'

 

Pelo que entendi, o erro indica que o ponteiro topo não faz parte da struct sapato, mas eu declarei topo como sendo um ponteiro para sapato, não está correto?

 

//DIRETIVAS #include <stdio.h>#include <stdlib.h>#include <string.h>#include <ctype.h>#include <conio.h>#define MAX 21//ESTRUTURAtypedef struct Sapato{		char marca[MAX];		char modelo[MAX];		char cor[MAX];		int num;		struct Sapato *prox;		};		//VARIÁVEIS GLOBAISchar marca[MAX], modelo[MAX], cor[MAX];int num;Sapato *topo;//ponteiro para o topo da pilha//FUNÇÃO AUXILIAR LER DADOS void dados_sapato(){	 system("cls");	 	 printf ("\nEntre com a marca do sapato: ");	 fflush (stdin);	 fgets (marca, MAX, stdin);	 	 printf ("Entre com o modelo do sapato: ");	 fflush (stdin);	 fgets (modelo, MAX, stdin);	 	 printf ("Entre com a cor do sapato: ");	 fflush (stdin);	 fgets (cor, MAX, stdin);	 	 printf ("Entre com o numero do sapato: ");	 fflush (stdin);	 scanf ("%d", &num);}//FUNÇÃO INSERIRvoid push_sapato(){	 dados_sapato();//chamando a função	 	 Sapato *pnovo=(Sapato*)malloc(sizeof(Sapato));//alocando memoria para os novos elementos	 strcpy(pnovo->marca,marca);	 strcpy(pnovo->modelo,modelo);	 strcpy(pnovo->cor,cor);	 pnovo->num=num;	 pnovo->prox=NULL;	 	 if(topo==NULL)//se a pilha estiver vazia	 topo=pnovo; //topo recebe o novo elemento	 	 else{		  pnovo->prox=topo; 		  topo=pnovo;		  }}//FUNÇÃO EXCLUIRvoid pop_sapato(){	 Sapato *aux;	 	 if(topo==NULL){					printf ("\n\nErro, pilha de sapatos vazia.\n\n");					return;					}										else{						 aux=topo;						 topo=topo->prox;						 free(aux);						 }}//FUNÇÃO LISTARvoid listar_sapatos(){	 Sapato *aux;	 	 aux=topo;	 	 while(aux!=NULL){					  printf ("\t\t\tDADOS SAPATO\n\n");					  printf ("Marca: %s", aux->marca);					  printf ("Modelo: %s", aux->modelo);					  printf ("Cor: %s", aux->cor);					  printf ("Numero: %d", aux->num);					  					  aux=aux->topo;					  } }//FUNÇÃO PRINCIPALint main(){	char op;	topo=NULL;//incializando a pilha como vazia      do{	   system("cls");	   	   printf ("\t\t\tFABRICA DE SAPATO PALOMA & CIA");	   printf ("\n\n(E)mpilhar Sapato\n");	   printf ("(L)istar Estoque Sapatos\n");	   printf ("(D)esempilhar Sapato\n");	   printf ("(S)air do Programa\n\n");	   	   printf ("Digite a opcao: ");	   	   op=toupper(getche());	   	   switch(op){				  case'E': push_sapato();				  break;				  case'L': listar_sapatos();				  break;				  case'D': pop_sapato();				  break;				  case'S': exit(0);				  default: printf ("\n\nOpcao invalida, digite novamente.\n\n");				  }	   				  system("PAUSE");				  }while (op!='S');	return (0);}

Compartilhar este post


Link para o post
Compartilhar em outros sites

{	 Sapato *aux;		 aux=topo;		 while(aux!=NULL){					  printf ("\t\t\tDADOS SAPATO\n\n");					  printf ("Marca: %s", aux->marca);					  printf ("Modelo: %s", aux->modelo);					  printf ("Cor: %s", aux->cor);					  printf ("Numero: %d", aux->num);					  					  aux=aux->topo;					  }}
Não está aqui o problema?

aux=aux->topo;

Mas a struct Sapato não tem nenhum membro chamado 'topo'

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.