Koncaman
Utilizador Saloio
boas,
é o seguinte, eu preciso de converter uma matriz para um grafo, contudo, nesse grafo preciso que cada casa da matriz esteja ligada à casa superior, inferior, esquerda, e direita.
^
<casa>
v
ja criei uma estrutura para tal.
contudo estou a ter alguns problemas em desenvolver um codigo que me resolva este problema.
o que eu tenho nete momento (porque ja descartei outro em que vinha a trabalhar ha algum tempo, com cerca de 60 linhas... e que não me resolvia o problema)
o que se passa é que na execução existe um segmentation fault (por causa de dois if's linhas que introduzi)
depois, acho que existe alguma falta de ligação entre as casas da linha superior, com as casas da linha inferior, e das casas de colunas à direita com casas de colunas à esquerda...
se alguma alma caridosa tiver a pachorra de tentar perceber o porque, e me queira dar uma dica, eu agradecia muito.
eu vou continuar a olhar para isto.
cumps.
é o seguinte, eu preciso de converter uma matriz para um grafo, contudo, nesse grafo preciso que cada casa da matriz esteja ligada à casa superior, inferior, esquerda, e direita.
^
<casa>
v
ja criei uma estrutura para tal.
contudo estou a ter alguns problemas em desenvolver um codigo que me resolva este problema.
o que eu tenho nete momento (porque ja descartei outro em que vinha a trabalhar ha algum tempo, com cerca de 60 linhas... e que não me resolvia o problema)
Código:
for(row_count=0; row_count < n_linhas; row_count++){
for(column_count=0; column_count < n_colunas; column_count++){
/*percorre a matriz*/
{
for(aux2=first_p; aux2->down!=NULL; aux2 = aux2->down);
for(aux=aux2; aux->left!=NULL; aux = aux->left);
/*percorre as listas*/
aux->casa = matrix[row_count][column_count];
aux->coluna = column_count;
aux->linha = row_count;
if(row_count != n_linhas){
aux->down = (casa_nivel_graph *)malloc(sizeof(casa_nivel_graph));
aux->down->up = aux;
}
if(column_count != n_colunas){
aux->left = (casa_nivel_graph *)malloc(sizeof(casa_nivel_graph));
aux->left->right = aux;
}
if(column_count == 0){
aux->right = NULL;
}
if(column_count != 0){ /*este if é problematico: segmentation fault*/
aux->right->left = aux;
}
if(row_count == 0){
aux->up = NULL;
}
if(row_count != 0){ /*este if é problematico: segmentation fault*/
aux->up->down = aux;
}
if(column_count == n_colunas){
aux->left = NULL;
}
if(row_count == n_linhas){
aux->down = NULL;
}
}
}
o que se passa é que na execução existe um segmentation fault (por causa de dois if's linhas que introduzi)
depois, acho que existe alguma falta de ligação entre as casas da linha superior, com as casas da linha inferior, e das casas de colunas à direita com casas de colunas à esquerda...
se alguma alma caridosa tiver a pachorra de tentar perceber o porque, e me queira dar uma dica, eu agradecia muito.
eu vou continuar a olhar para isto.
cumps.