Ir para conteúdo

POWERED BY:

Arquivado

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

mmw

O que tem de errado em meu programa?

Recommended Posts

Alguém poderia me dizer onde está o erro ou os erros?

 

Obrigado

 

//DIRETIVAS  #include <stdio.h> #include <stdlib.h> #include <string.h> #include <ctype.h> #include <conio.h> #define MAX 21  //ESTRUTURA typedef struct Pessoa{		 char nome[MAX];		 char idade[MAX];		 char telefone[MAX];		 int num;		 struct Pessoa *prox;		 };		  //VARIÁVEIS GLOBAIS char nome[MAX], idade[MAX], telefone[MAX]; int num; Pessoa *topo;//ponteiro para o topo da pilha  //FUNÇÃO AUXILIAR LER DADOS  void ler_dados() {	  system("cls");	  	  printf ("\nDigite o nome: ");	  fflush (stdin);	  fgets (nome, MAX, stdin);	  	  printf ("Digite a Idade: ");	  fflush (stdin);	  fgets (idade, MAX, stdin);	  	  printf ("Digite o Telefone: ");	  fflush (stdin);	  fgets (telefone, MAX, stdin);	   }  //FUNÇÃO INSERIR void inserir_dados() {	  ler_dados();//chamando a função	  	  Pessoa *pnovo=(Pessoa*)malloc(sizeof(Pessoa));//alocando memoria para os novos elementos	  strcpy(pnovo->nome,nome);	  strcpy(pnovo->idade,idade);	  strcpy(pnovo->telefone,telefone);	  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 EXCLUIR void excluir_dados() {	  Pessoa *aux;	  	  if(topo==NULL){					 printf ("\n\nErro, pilha de Pessoas vazia.\n\n");					 return;					 }					 					 else{						  aux=topo;						  topo=topo->prox;						  free(aux);						  } }  //FUNÇÃO LISTAR void exibir_dados() {	  Pessoa *aux;	  	  aux=topo;	  	  while(aux!=NULL){					   printf ("\t\t\tDADOS Pessoa\n\n");					   printf ("Nome: %s", aux->nome);					   printf ("Idade: %s", aux->idade);					   printf ("Telefone: %s", aux->telefone, "\n");					   					   aux=aux->prox;					   }  }  //FUNÇÃO PRINCIPAL int main() {	 char op;	 topo=NULL;//incializando a pilha como vazia		do{		system("cls");				printf ("\t\t\tALGORITMO EM C PARA AGENDA");		printf ("\n\n(A) Iniciar\n");		printf ("(B) Inserir\n");		printf ("(C) Excluir\n");		printf ("(D) Exibir\n");		printf ("(E) Sair do Programa\n\n");				printf ("Digite a opcao: ");				op=toupper(getche());				switch(op){				   case'A': main();				   break;				   case'B': inserir_dados();				   break;				   case'C': excluir_dados();				   break;				   case'D': exibir_dados();				   break;				   case'E': exit(0);				   default: printf ("\n\nOpcao invalida, digite novamente.\n\n");				   }	   				   system("PAUSE");				   }while (op!='E');	 return (0); }

Compartilhar este post


Link para o post
Compartilhar em outros sites

O programa está perfeito, você só cometeu uma pequena falha aqui:

typedef struct Pessoa{		 .		 .		 .		 };
Se você mandou um typedef você tem que dizer como a struct Pessoa vai ser definida. Podemos defini-la como Pessoa. Ficaria assim:

typedef struct Pessoa{		 .		 .		 .		 }Pessoa;
Assim você não precisa mais acessar sempre struct Pessoa, e vai poder chamar simplesmente Pessoa.

 

Espero ter ajudado.

[]´s

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.