Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

PlayMa256

Listas duplamente encadeadas

Mensagens Recomendadas

PlayMa256

Bom, nos foi passada pelo professor o codigo, para realizar a correção dos erros que possui, dentre eles muitos.

Estava a corrigir algumas coisas, me deparei com isto:

int Obter_Tamanho_LS(Tdescritorno_ls d, int *tam)
{
Tdescritorno_ls percorre;
tam = 0;
if((d.prim) != NULL)
{
//exatamente aqui o problema
   percorre = d.prim;
while (d.prim != NULL)
{
	 tam++;
	 d.prim = d.prim;
}
 }
else
{
	 tam = 0;
}
}

havia lido pela internet, que quando não se é declarado na funcao, como requisito um ponteiro, entao se utiliza o ponto pra chamar o membro da struct, nao o ->.

Bom, foi o que fiz, mas ele diz que

error: incompatible types when assigning to type 'Tdescritorno_ls' from type 'struct no_ls *'

O percorrer estava declarado como um ponteiro, como o Tdescritorno_ls nao está como ponteiro, passei o percorrer pra tipo Tdescritorno_ls mesmo.

Qual o problema disso?

mais pra frente me deparei com um problema semelhante, tenho a funcao int Obter_Tamanho_LS(Tdescritorno_ls d, int *tam)

a mesma está sendo usada dentro de uma outra funcao, a qual requer alguns outros paramentros, entao estou a chama-la desta maneira:

Obter_Tamanho_LS(d->prim, d->tam);

a mesma pede uma struct, entao estou passando isto a ele, só que um erro parecido me é expresso:

error: incompatible type for argument 1 of 'Obter_Tamanho_LS'|

Na funcao em si, int Obter_Tamanho_LS(Tdescritorno_ls d, int *tam), está dando o erro note: expected 'Tdescritorno_ls' but argument is of type 'struct no_ls *'|. OBS: isto é no cabeçalho da função, nao esta sendo invocada.

Posso estar me confundindo com algumas coisas, entao peço ajuda para poder entender melhor esse conceito.

Obrigado.

Editado por PlayMa256

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

error: incompatible types when assigning to type 'Tdescritorno_ls' from type 'struct no_ls *'

o problema do typedef ...

Tdescritorno_ls é na realidade um ponteiro : struct no_ls *

logo será sempre usado o "->"

desculpa .. li mal o post ... isso está uma confusão

sem a definição da estrutura usada (Tdescritorno_ls) só posso presumir o seguinte:

o membro prim do Tdescritorno_ls é um ponteiro, e daí vem o teu problema

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
PlayMa256

entao, fiz a troca no percorre = d.prim pra percorre = d->prim e ele aparece:

error: invalid type argument of '->' (have 'Tdescritorno_ls')|

Esqueçi da descricao mesmo.

typedef struct no_ls {
   int dado;
   struct no_ls *prox;
}  Tno_ls;
typedef struct descritor_ls {
    int tam;
    struct no_ls *prim;
   struct no_ls *ult;
} Tdescritorno_ls;

Editado por PlayMa256

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.