Ir para conteúdo
Fórum Script Brasil
  • 0

Ajuda no código em C... Urgente!


Rondinelly

Pergunta

Boa tarde, galera!

Sou novo aqui no fórum e preciso de uma ajuda de vocês... tenho um código de um programa em c que insiste em dar erro ao remover e ao inserir elementos.

O que acontece...

Para inserir, ele insere um elemento e, ao invés de voltar no menu para o usuário escolher outra opção, ele insere um elemento e volta na tela de inserção automaticamente.

E para remover, ele não remove o primeiro elemento da lista, e quando remove, vamos procurar o elemento removido para verficar se realmente ele foi, e acaba que ele não foi removido nada...

Por favor, me ajudem...

Vou postar o código...

Me desculpem se quebrei alguma regra do fórum, mas espero q fique fera como vocês em algum dia...

Obrigado!

#include<stdio.h>

#include<conio.h>

#include<string.h>

#include<stdlib.h>

#define OK 1

#define ERROR 0

#define TRUE 1

#define FALSE 0

struct ListaEncadeadaOrdenada

{

char nome[50], sexo[10];

int cpf;

struct ListaEncadeadaOrdenada *elo;

};

typedef ListaEncadeadaOrdenada defLista;

int insere();

void remove();

void encontra();

defLista *Lista;

defLista *Primeiro;

int main()

{

char opcao;

int resultado;

int contador=0;

while (opcao!=4)

{

system("cls");

printf(" ------------------------------------------------------\n");

printf("\t L I S T A E N C A D E A D A O R D E N A D A\n");

printf(" ------------------------------------------------------\n");

printf("\t\t\t 1 - INSERIR;\n");

printf("\n");

printf("\t\t\t 2 - REMOVE;\n");

printf("\n");

printf("\t\t\t 3 - PROCURAR POR NOME;\n");

printf("\n");

printf("\t\t\t 4 - SAIR.\n");

printf("\n\t\t\t OPCAO: ");

scanf("%d",&opcao);

fflush(stdin);

switch(opcao)

{

case 1: system("cls");

printf("\t\t ********************************************\n");

printf("\t\t * 1 - INSERCAO *\n");

printf("\t\t ********************************************\n");

resultado=insere();

if (resultado==TRUE)

{

printf("\nINSERIDO COM SUCESSO NA LISTA !");

contador++;

}

printf("\n\n << PRESSIONE QUALQUER TECLA PARA CONTINUAR >>");

getch();

break;

case 2: system("cls");

printf("\t\t **************************\n");

printf("\t\t * 2 - REMOVER *\n");

printf("\t\t **************************\n");

remove();

printf("\n\n << PRESSIONE QUALQUER TECLA PARA CONTINUAR >>");

getch();

break;

case 3: system("cls");

printf("\t\t ************************************\n");

printf("\t\t * 3 - PROCURAR POR NOME *\n");

printf("\t\t ************************************\n");

encontra();

printf("\n\n << PRESSIONE QUALQUER TECLA PARA CONTINUAR >>");

getch();

break;

case 4 :exit(1);

}

}

}

int insere()

{

defLista *Aux;

defLista *PercorreLista;

char nome[50], sexo[10];

int cpf;

printf("Nome: ");

gets(nome);

printf("\nSexo: ");

gets(sexo);

printf("\nCPF: ");

scanf("%d", &cpf);

Aux=(defLista *)malloc(sizeof(defLista));

if (Aux==NULL)

{

return(0);

}

else

{

strcpy(Aux->nome,nome);

strcpy(Aux->sexo,sexo);

Aux->cpf=cpf;

Aux->elo = NULL;

if( Lista!=NULL)

{

if (Primeiro!=NULL)

{

Aux->elo = Primeiro;

Lista=Aux;

PercorreLista=Primeiro;

if (stricmp(Lista->nome, Primeiro->nome) > 0)

{

Aux=Primeiro;

PercorreLista = Primeiro->elo;

while ((PercorreLista!=NULL) && (((stricmp(Lista->nome,PercorreLista->nome)) > 0)))

{

Aux=PercorreLista;

PercorreLista = PercorreLista->elo;

}

Lista->elo = PercorreLista;

Aux->elo = Lista;

}

else

{

Primeiro=Lista;

}

}

else

{

if (stricmp(Aux->nome, Lista->nome) > 0)

{

Lista->elo = Aux;

Primeiro=Lista;

Lista=Aux;

}

if (stricmp(Aux->nome, Lista->nome) < 0)

{

Aux->elo = Lista;

Lista=Aux;

Primeiro=Lista;

}

}

}

else

{

Lista=Aux;

}

}

return(1);

}

void remove()

{

defLista *Aux, *ant, *a;

bool num=false;

char procurado[50];

if (Lista == NULL)

{

printf("Erro. Lista Vazia!");

}

else

{

printf("\nDigite o nome que deseja remover da lista:\n");

gets(procurado);

system("cls");

if (Primeiro == NULL)

{

Aux=Lista;

if(strcmp(procurado, Aux->nome)==0)

{

Aux=NULL;

Lista=NULL;

num=true;

}

else

{

printf("Erro. Esse nome não existe na lista!\n");

}

}

else

{

Lista=Primeiro;

Aux=Lista;

ant=Lista;

while (num!=true)

{

if(stricmp(procurado, Aux->nome)==0)

{

ant->elo=Aux->elo;

Aux=NULL;

num=true;

}

else

{

ant=Aux;

Aux = Aux->elo;

}

}

}

if (num==false)

{

printf("Erro. Esse nome não existe na lista!\n");

}

else

{

printf("Removido com sucesso da lista!\n");

}

}

}

void encontra()

{

defLista *Aux, *x;

bool num=false;

char procurado[50];

if (Lista == NULL)

{

printf("Erro. Lista Vazia!");

}

else

{

printf("\nDigite o nome que deseja encontrar na lista:\n");

gets(procurado);

system("cls");

if (Primeiro == NULL)

{

Aux=Lista;

if(strcmp(procurado, Aux->nome)==0)

{

printf("Nome: %s\n", Aux->nome);

printf("Sexo: %s\n", Aux->sexo);

printf("CPF: %d\n", Aux->cpf);

}

else

{

printf("Erro. Esse nome não existe na lista!\n");

}

}

else

{

Lista=Primeiro;

Aux=Lista;

while (Aux!=NULL)

{

if(stricmp(procurado, Aux->nome)==0)

{

printf("Nome: %s\n",Aux->nome);

printf("Sexo: %s\n", Aux->sexo);

printf("CPF: %d\n\n", Aux->cpf);

num=true;

}

Aux = Aux->elo;

}

if (num==false)

{

printf("Erro. Esse nome não existe na lista!\n");

}

}

}

}

Link para o comentário
Compartilhar em outros sites

0 respostass a esta questão

Posts Recomendados

Até agora não há respostas para essa pergunta

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...