YagoMaia 0 Denunciar post Postado Novembro 11, 2014 Boa tarde galera Estou cursando Ciências da Computação, e estou na matéria de lista sequencial Estou com dificuldade em um exercício, na parte em que eu preciso ordernar os alunos pelas matrículas e retira-los também pelas matrículas. Quando eu insiro, se o meu primeiro aluno não tiver a maior matrícula, acaba que um aluno recebe um lixo de memória. E na hora de retirar pela matrícula, não acontece, parece que está retirando apenas pela posição no vetor. Aqui o cód simplificado(apenas as funções que estou apanhando e o main na hora que eu chamo as funções) void Ordena(struct ListaSequencial *P, struct Aluno Inf) { int aux=0; int i=0; if (ListaVazia(P)) { P->VetorAluno[P->Cabeca]=Inf; P->Cabeca++; } else { while (Inf.Matricula > P->VetorAluno.Matricula) { i++; } aux=P->Cabeca; for (; aux >= i; aux--) { P->VetorAluno[aux+1]=P->VetorAluno[aux]; } P->VetorAluno=Inf; P->Cabeca++; } } int Retira (struct ListaSequencial *P, float Mat) { int i=0; if (ListaVazia(P) || P->VetorAluno[P->Cabeca-1].Matricula <= Mat) { printf("Lista vazia, insira um aluno primeiro."); return 0; } else { while (P->VetorAluno.Matricula != Mat) { i++; } for (i; i < P->Cabeca-1; i++) { P->VetorAluno=P->VetorAluno[i+1]; } P->Cabeca--; return 1; } } Main() { case 1: //Insere Aluno if (!ListaCheia(&DA)) { system("cls"); printf("Digite o nome do aluno: "); fflush(stdin); gets(Dados.Nome); printf("Digite a matricula de %s: ",Dados.Nome); scanf("%f",&Dados.Matricula); Ordena(&DA,Dados); printf("\n\nPressione qualquer tecla para voltar ao menu: "); fflush(stdin); getchar(); system("cls"); } else { system("cls"); printf("\n\nLista cheia!"); printf("\n\nPressione qualquer tecla para voltar ao menu: "); fflush(stdin); getchar(); system("cls"); } break; case 2: //Remove aluno pela matricula system("cls"); if (!ListaVazia(&DA)) { Matricula=0; ImprimeLista(&DA); printf("\n\nQual aluno gostaria de remover da lista?"); printf("\nMatricula: "); scanf("%f",&Matricula); int resultado = Retira(&DA,Matricula); if(resultado == 1){ //system("cls"); printf("\n\nAluno removido"); } else { printf("\n\nErro!"); } } } Galera, boa noite, obrigado! Compartilhar este post Link para o post Compartilhar em outros sites