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...
Pergunta
Rondinelly
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
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.