nara Postado Outubro 11, 2005 Denunciar Share Postado Outubro 11, 2005 essa função que deve encontrar e deletetar o elemento_lista v ,mas o compilalor aponta erro na hora de deletar o que esta errado?void retira(no local[],int pri,elemento_lista v){ int aux; for(aux=pri;aux!= -1;aux ++) { if(local[aux].info==v) delete local[aux].info; }} Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Graymalkin Postado Outubro 11, 2005 Denunciar Share Postado Outubro 11, 2005 mas o compilalor aponta erro na hora de deletar Qual o erro (a mensagem de erro) que ele aponta?Abraços,Graymalkin Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Wicker Man Postado Outubro 11, 2005 Denunciar Share Postado Outubro 11, 2005 Opa!"info" é um ponteiro? Se não for, o uso do operador "delete" está incorreto. Além disso, no "if", você tenta comparar diretamente dois objetos da estrutura "elemento_lista" ("v" e "info"), quando você deveria comparar membro a membro esses objetos (a menos que sobrecarregue o operador "==").Por exemplo, digamos que a estrutura "elemento_lista" contenha dois membros inteiros: "x" e "y". Para comparar "v" e "info" baseando-se no seu código (e considerando que "info" seja um ponteiro):... if ( local[ aux ].info->x == v.x && local[ aux ].info->y == v.y ) ...Até mais! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 nara Postado Outubro 14, 2005 Autor Denunciar Share Postado Outubro 14, 2005 realmente e esse o erro q o compilador aponta ,pra eu consiguir deletar ter q ser ponteiro.criei uma vareavel aux do tipo ponteriro para quardar o alemento da list a e deletar mas ainda não deu certo!!! #include <iostream.h>typedef int elemento_lista;struct no { elemento_lista info; int link;};const MAXLISTA =6;no local[MAXLISTA];int pri,disp;void criar_vazia (no local [], int & pri, int & disp, int maxlista){ int i =0; for (i = 0; i < maxlista - 1; i ++) { local.link = i+1; } local [maxlista-1].link = -1; pri = -1; disp=0; }int novo_no (no local[], int& disp){ int n; if (disp == -1) { return -1; } n = disp; disp=local[n].link; return n;}int inserir_inicio_lista (no local [], int & pri, int &disp, elemento_lista v){ int aux; aux = novo_no(local, disp); if (aux ==-1) return -1; local[aux].info = v; local[aux].link = pri; pri = aux; return 1;}void retira(no local[],int * aux,int pri,elemento_lista v){ for(*aux=pri;*aux!= -1;*aux ++) { if(local*[aux].info==v) delete local[*aux].info; }}void imprimir_lista (no local [], int & pri){ int aux; aux = pri; if (aux == -1) cout<<"Lista Vazia!"<<endl; cout << "Lista: "; while (aux !=-1) { cout << local[aux].info<< " "<<endl; cout<< local[aux].link<<" "<<endl; aux = local[aux].link; } cout << endl;}void main (){ int pri, disp,opcao,aux; elemento_lista v; no local[MAXLISTA]; criar_vazia(local,pri,disp,MAXLISTA); do { cout<<" MENU!!"<<endl<<endl<<endl; cout<<"<1> INSERIR NO INICIO DA LISTA"<<endl <<"<2> MOSTRAR ELEMENTOS DA LISTA"<<endl <<"<3> Retirar"<<endl <<"<0> SAIR"<<endl; cin>>opcao; switch(opcao) { case 1: cout<<"Digite um valor a ser inserido: "<<flush; cin>>v; if(inserir_inicio_lista (local , pri, disp, v)== -1) { cout<<"lista cheia"; } break; case 2: imprimir_lista (local, pri); break; case 3:cout<<"digite um numero para ser retirado da lista"<<endl; cin>>aux; retira(local,&aux,pri,v); break; case 0: break; default: cout<<"valor invalido "<<endl; } } while (opcao !=0); } Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
nara
essa função que deve encontrar e deletetar o elemento_lista v ,mas o compilalor aponta erro na hora de deletar o que esta errado?
void retira(no local[],int pri,elemento_lista v)
{
int aux;
for(aux=pri;aux!= -1;aux ++)
{
if(local[aux].info==v)
delete local[aux].info;
}
}
Link para o comentário
Compartilhar em outros sites
3 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.