The WolfMan
1st Folding then Sex
Estou aqui com um problema que ando há que tempos para resolver. Tenho uma matriz de dimensões m*n e dado uma coordenada (i,j) e um tamanho pretendo imprimir os números da "sub matriz".
map é a matriz que está armazenada em linha em memória, daí o "sweep = i * header_values[1] + j;" para "emular" a linha i e a coluna j da matriz.
header_values é um vector de 5 inteiros. Os dois primeiros indicam a dimensão da matriz, os outros 2 a posição do centro da matriz e o último inteiro é o offset desse ponto. Se for 2 por exemplo, pretendo imprimir todas os valores dentro do quadrado que se afasta 2 do centro.
Como é que eu estou a tentar fazer. Dado um ponto (i,j) e um offset k estou a andar k para a esquerda e k para cima e depois varro essa matriz. Mas só estou a obter valores parvos. Alguém tem sugestões?
Sei que pode haver pontos que não são da matriz, tudo a seu tempo.
No fim de escrever este post acho que me lembrei de algo, vou experimentar.
Código:
int sub_matrix(int * map, int * header_values) {
int step_limit = 0;
int sweep = 0;
int i = 0, j = 0;
step_limit = abs(header_values[4]);
for (i = header_values[2]-step_limit; i <= header_values[2]+step_limit; i++) {
for (j = header_values[3]-step_limit; j <= header_values[3]+step_limit; j++) {
sweep = i * header_values[1] + j;
printf("************%d************\n", map[sweep]);
}
}
return 0;
}
header_values é um vector de 5 inteiros. Os dois primeiros indicam a dimensão da matriz, os outros 2 a posição do centro da matriz e o último inteiro é o offset desse ponto. Se for 2 por exemplo, pretendo imprimir todas os valores dentro do quadrado que se afasta 2 do centro.
Como é que eu estou a tentar fazer. Dado um ponto (i,j) e um offset k estou a andar k para a esquerda e k para cima e depois varro essa matriz. Mas só estou a obter valores parvos. Alguém tem sugestões?
Sei que pode haver pontos que não são da matriz, tudo a seu tempo.
No fim de escrever este post acho que me lembrei de algo, vou experimentar.