Ir para conteúdo
Fórum Script Brasil

kinze

Membros
  • Total de itens

    2
  • Registro em

  • Última visita

Sobre kinze

kinze's Achievements

0

Reputação

  1. Oi, estou a estudar estruturas de dados para implementar indices numa base de dados multidimensional. Acabei por resolver o problema hoje à tarde da seguinte forma: estava declarado que uma quadtree tinha, como campo 1 arvore binaria do tipo arvore. Ora o tipo arvore estava definido como: typedef struct arv * arvore. o tipo quadtree estava definido como: typedef struct nodo * quadtree. e ao longo das funções trabalhava sempre com os tipos arvore e quadtree. Mudei isso tudo e fiquei a trabalhar com os apontadores iniciais.. onde tinha arvore substitui por (struct arv *) e onde tinha quadtree substitui por (struct nodo*) e tudo ficou a funcionar bem.. não percebi o porque disso visto que pensava q a declaração typedef fazia com que a utilização das duas maneiras fosse equivalente.. obg:)
  2. 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:)
×
×
  • Criar Novo...