Eu estou a fazer um trabalho para a universidade em C e, já estando um bocado enferrujado em C não estava à espera que me acontecesse um erro destes. Já estou à volta do caso há 3 dias e não consigo mesmo perceber sequer qual é o problema. O código necessário para a resolução do problema é:
arvore newNode(arvore t, int x, int y)
{
t->y = y;
t->x = x;
t->right = NULL;
t->left = NULL;
return t;
}
quadtree newQuadNode(int x, int y)
{
quadtree quad = NULL;
quad = (quadtree) malloc(sizeof(quad));
quad->forest = NULL;
quad->forest = (arvore) malloc(sizeof(tree));
quad->forest = newNode(quad->forest, x, y);
quad->lowerX = x;
quad->lowerY = y;
quad->upperX = x;
quad->upperY = y;
quad->capacidade = 1;
quad->nw = NULL;
quad->sw = NULL;
quad->ne = NULL;
quad->se = NULL;
return quad;
}
Com as estruturas:
typedef struct arv
{
int x;
int y;
struct arv * left;
struct arv * right;
}tree;
typedef tree * arvore;
typedef struct nodo
{
int upperX, lowerX;
int upperY;
int lowerY;
int capacidade;
arvore forest;
struct nodo *nw;
struct nodo *ne;
struct nodo *sw;
struct nodo *se;
}quad;
o que me acontece quando invoco a newQuadNode para uma quadtree
quadtree q = NULL;
q = newQuadNode(9, 112);
e depois peço pra mostrar, o que acontece é que q->forest->y = um número elevadíssimo (que acho que é o endereço) e q->forest->x = 1, que ao fazer debugging com o ddd, descobri que é alterado pela atribuição q->capacidade = 1 (!!!)
dada a relativa facilidade do código não entendo onde me possa ter enganado. Se alguém conseguir ver o que eu falhei em ver tem, desde já, os meus agradecimentos:)
Pergunta
kinze
Boa tarde,
Eu estou a fazer um trabalho para a universidade em C e, já estando um bocado enferrujado em C não estava à espera que me acontecesse um erro destes. Já estou à volta do caso há 3 dias e não consigo mesmo perceber sequer qual é o problema. O código necessário para a resolução do problema é:
o que me acontece quando invoco a newQuadNode para uma quadtree
quadtree q = NULL;
q = newQuadNode(9, 112);
e depois peço pra mostrar, o que acontece é que q->forest->y = um número elevadíssimo (que acho que é o endereço) e q->forest->x = 1, que ao fazer debugging com o ddd, descobri que é alterado pela atribuição q->capacidade = 1 (!!!)
dada a relativa facilidade do código não entendo onde me possa ter enganado. Se alguém conseguir ver o que eu falhei em ver tem, desde já, os meus agradecimentos:)
Editado por kinzeLink para o comentário
Compartilhar em outros sites
2 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.