Logo Hardware.com.br
Balrog
Balrog Novo Membro Registrado
39 Mensagens 0 Curtidas

Struct por Referência

#1 Por Balrog 06/01/2005 - 12:55
Hail Pessoal!

Estou tendo problemas ao passar uma variável do tipo de estrutura que eu criei por referência...

Vamos ver se alguém consegue me ajudar:

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

struct pilha{
float dado;
int topo;
};

/* restante */

float POP (pilha *P)
{
float AUX = (*P).dado[(*P).topo];
(*P).topo--;
return AUX;
}

int main ()
{
struct pilha P;
float SAIDA;

SAIDA = POP(&P);

printf("%f",SAIDA);

return 0;
}


Importante declarae que há erros na compilação. De qualquer forma, irei fazer mais testes aki, se não resolver, irei postar os erros que aparecem...

Ah! Estou usando o Visual C++ [caso seja necessária essa informação]

FLW
pflynn
pflynn Ubbergeek Registrado
5.5K Mensagens 122 Curtidas
#2 Por pflynn
06/01/2005 - 15:24
Amigo M. Bison big_green.png ,

você fez uma pequena salada aqui:


float AUX = (*P).dado[(*P).topo];
(*P).topo--;


Existe um operador, o operador -> que é utilizado para acessar membros de estruturas quando a variável é um ponteiro para a estrutura.

float AUX = P->dado;
P->topo--;

Agora, achei um pouco estranha a sua estrutura representando uma pilha.
------------------------------------------------
Muito bom. Mas tijolo não revida!
------------------------------------------------
jqueiroz
jqueiroz Cyber Highlander Registrado
104K Mensagens 5.7K Curtidas
#3 Por jqueiroz
07/01/2005 - 17:45
Olá Balrog.

Como o pflynn já te adiantou, ao invés de escrever "(*pilha).topo", vc pode escrever "pilha->topo". Isso simplifica a construção, mas não conserta o algoritmo, que tb está errado.

Acho que você queria sua estrutura assim, na realidade:

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

#define TAM_PILHA 100

struct pilha{
float dado[TAM_PILHA];
int topo;
};

/* restante */

float POP (pilha *P)
{
float AUX = P->dado[P->topo];
P->topo--;
return AUX;
}

int main ()
{
struct pilha P;
float SAIDA;

SAIDA = POP(&P);

printf("%f",SAIDA);

return 0;
}
"chmod 777 nunca ajudou ninguém" (c) 2002-2021 JQueiroz/FGdH
Conheça o Blog do Zekke
© 1999-2024 Hardware.com.br. Todos os direitos reservados.
Imagem do Modal