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

Problema com a função excluir


Mariana Duarte

Pergunta

Gente, estou fazendo um dicionário, mas não estou conseguindo implementar corretamente a função excluir...

A primeira dúvida é o seguinte:

eu fiz essa função e está dando erro, diz conversão inválida de char* para char... Está correta? Porque eu quero excluir somente uma palavra específica...

Dic* excluir(Dic *d, char palavra);

E o código abaixo... Queria saber o que estou fazendo de errado na implementação dessa função... Se alguém puder ajudar, obrigada (:

#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>

typedef struct dic{
char palavra[30], sig[150];
struct dic *prox;
}Dic;

Dic* inserir(Dic *d);

void consultar(Dic *d);

void alterar(Dic *d);

Dic* excluir(Dic *d, char pal);

char imprimir(Dic *d);

main(){
char opcao, op, palavra[30], signif[150],pe[30];
Dic *dicionario,*inicio=NULL,*ant;


do{
printf("ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª\n");
printf("1 - Inserir uma nova palavra\n");
printf("2 - Consultar o significado de uma palavra\n");
printf("3 - Alterar uma palavra\n");
printf("4 - Excluir uma palavra\n");
printf("5 - Imprimir o dicionario\n");
printf("0 - Sair\n");
printf("ªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªªª\n\n\n");
fflush(stdin);
scanf("%c",&opcao);

if(opcao=='1'){
dicionario = inserir(dicionario);
getch();
}
if(opcao=='2'){
/*printf("\nDigite a palavra a ser consultada:\n");
gets(pal);*/
consultar(dicionario);
getch();
}
//if(opcao=='3'){
/*printf("1 - Alterar a palavra\n");
printf("2 - Alterar o significado\n");
printf("3 - Alterar palavra e significado\n");
fflush(stdin);
scanf("%c",&op);

if(op=='1'){
printf("\nDigite a palavra a ser alterada:\n");
gets(p);
alterar(dicionario);
getch();
}*/
if(opcao=='4'){
printf("\nDigite a palavra a ser excluida:\n");
fflush(stdin);
scanf("%s",pe);
excluir(dicionario,pe);
getch();
}
/*if(opcao=='5'){
imprimir(dicionario);
getch();
}*/
if(opcao=='0'){
printf("\nEnter para sair...");
getch();
}
system("cls");
}while(opcao!='0');
}

Dic* inserir(Dic *d){
Dic *aux;
char op;
do{
aux=(Dic*)malloc(sizeof(Dic));
printf("\nDigite a palavra:\n");
fflush(stdin);
gets(aux->palavra);
printf("\nDigite o significado:\n");
fflush(stdin);
gets(aux->sig);
aux->prox=d;
d=aux;
printf("\nDeseja digitar uma nova palavra? (s/n)");
fflush(stdin);
scanf("%c",&op);
}while(op=='s' || op=='S');
return d;
}

void consultar(Dic *d){
Dic *aux;
int a=0;
char op;
char pal[30];
do{
printf("\nDigite a palavra a ser consultada:\n");
fflush(stdin);
scanf("%s",pal);
aux=d; //busca na lista
//a=0;//--> pra verificar se o elemento foi encontrado
while(aux!=NULL){
if(strcmp(aux->palavra,pal)==0){
printf("\nO significado da palavra é:\n");
printf("%s",aux->sig);
a=1;
break;
}
else
aux=aux->prox;
} //aviso: deve-se fechar o while antes de verificar se o elemento não foi encontrado
if(a==0){
printf("\nPalavra não encontrada");
}
printf("\nDeseja procurar mais alguma palavra? (s/n)");
fflush(stdin);
scanf("%c",&op);
}while(op=='s'||op=='S');
}

//void alterar(Dic *d);

void excluir(Dic *d, char pal){
Dic *aux,*ant;
char pal[30];


aux=d;
ant=NULL;//ainda não entrou
while(aux->palavra!=pal){
ant=aux;
aux = aux->prox;
}
if(aux==d){
d=aux->prox;
free(aux);
}
else{
if(aux==NULL)
printf("\nPalavra não encontrada");
else{
ant->prox=aux->prox;
free(aux);
}
}
aux=d;
while(aux!=NULL){
printf("\n Valor : %d",aux->palavra);
aux=aux->prox;
}
}
//char imprimir(Dic *d);[/CODEBOX]

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,1k
    • Posts
      651,8k
×
×
  • Criar Novo...