mmw 0 Denunciar post Postado Março 5, 2007 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
skimo-solar 0 Denunciar post Postado Março 6, 2007 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