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 é:
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:)
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.