Ir para conteúdo
Fórum Script Brasil

Furtadomito

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre Furtadomito

Furtadomito's Achievements

0

Reputação

  1. Não estou conseguindo implementar corretamente... da falha de segmentação na hora de inserir mais de um registro, alguém ajuda?? #include<stdio.h> #include<stdlib.h> #include<string.h> typedef struct _Aluno{ char nome[30]; int idade; }Tp_Aluno; typedef struct _Pilha{ Tp_Aluno *info; int topo; }Tp_Pilha; void criaPilha(Tp_Pilha *p, int valor){ Tp_Aluno *aux = (Tp_Aluno*) malloc(sizeof(Tp_Aluno) * valor); p->info=aux; } int estaCheia(Tp_Pilha *p,int valor){ if(p->topo>=valor-1){ return 1; } return 0; } int estaVazia(Tp_Pilha *p){ if(p->topo==-1){ return 1; } return 0; } int push(Tp_Pilha *p, Tp_Aluno *num){ p->topo++; strcpy(p->info[p->topo].nome,num->nome); p->info[p->topo].idade = num->idade; return 1; } int pop(Tp_Pilha *p){ if(estaVazia(p)==0){ printf("Aluno removido: %s \n", p->info[p->topo].nome); p->topo--; } else{ printf("\n \n Pilha Vazia!! \n \n"); } return -1; } int display(Tp_Pilha *p){ int i; if(estaVazia(p)==0){ printf("\nAlunos Matriculados: \n \n"); for(i=p->topo;i>=0;i--){ printf("Aluno: %s \n",p->info.nome); printf("Idade: %d \n",p->info.idade); printf("\n \n"); } } else{ printf("\n PILHA VAZIA!! \n \n"); } return 0; } int consultar(Tp_Pilha *p){ if(estaVazia(p)!=1){ printf("\nAluno cadastrado no topo:\n"); printf("Aluno: %s \n",p->info[p->topo].nome); printf("Idade: %d \n",p->info[p->topo].idade); } return 0; } int main(){ int n,menu; Tp_Pilha *p=(Tp_Pilha*) malloc(sizeof(Tp_Pilha)); Tp_Aluno *num=(Tp_Aluno*) malloc(sizeof(Tp_Aluno)); p=(Tp_Pilha*)malloc(sizeof (Tp_Pilha)); p->topo=-1; printf("\nInforme quantos Alunos deseja cadastrar: \n"); scanf("%d",&n); criaPilha(p,n); while(menu!=0){ printf("\n---------------------------------\n"); printf(" [1]Cadastrar Aluno: \n"); printf(" [2]Excluir cadastro: \n"); printf(" [3]Imprimir Cadastros: \n"); printf(" [4]Buscar cadastro: \n"); printf(" [0]Sair: \n"); printf("---------------------------------\n"); printf("\n Informe qual sua opcao:"); scanf("%d", &menu); switch(menu){ case 1: printf("\n Digite o nome do ALUNO: \n"); fflush(stdin); gets(num->nome); printf("\n Digite a Idade: \n"); scanf("%d",&num->idade); push(p,num); display(p); break; case 2: pop(p); display(p); break; case 3: printf("\n"); display(p); break; case 4: consultar(p); break; case 0: printf("\n Programa Finalizado!! \n"); break; default: printf("\n Numero digitado ivalido!!\n"); } free(p); } }
×
×
  • Criar Novo...