Acessando um valor dada sua posição numa matriz bidimensional
Dica publicada em C/C++ / Introdução
Acessando um valor dada sua posição numa matriz bidimensional
Essa dica é bem simples e útil para mostrar ao professor que você sabe mais que ele. hehehe
Vamos acessar um elemento numa posição numérica dentro de uma matriz bidimensional:
O algoritmo é o seguinte:
Supondo ser X a posição, W a largura da matriz e H a altura da matriz, então para saber a posição da linha de X basta apenas dividir a posição X por W, ele será menor que H e maior ou igual a zero. Depois a posição da coluna basta pegar o resto da divisão de X por W, ele será a coluna de X e será menor que W e maior ou igual a zero.
Vamos acessar um elemento numa posição numérica dentro de uma matriz bidimensional:
// acessar elemento numa matriz
#include <stdio.h>
int main(void)
{
int i, j, c;
int w = 10; // largura da matriz
int h = 5; // altura da matriz
// as posições vão de 0 até 5*10 - 1
int matriz[5][10];
c = w*h;
for (i = 0; i < h; i++)
{
for (j = 0; j < w; j++)
{
// incia a matriz
matriz[i][j] = --c;
// vai iniciando e imprimindo a matriz
printf("%2d,", matriz[i][j]);
}
printf("\n");
}
// posição para se pegar o valor
int pos = 0;
printf("\nDigite uma posição de 0 à %d: ", w*h - 1);
scanf("%d", &pos);
i = pos / w; // pega a linha de 'pos'
j = pos % w; // pega a coluna de 'pos'
printf("matriz[%d][%d] = %d\n", i,j, matriz[i][j]);
return 0;
}
O algoritmo é o seguinte:
Supondo ser X a posição, W a largura da matriz e H a altura da matriz, então para saber a posição da linha de X basta apenas dividir a posição X por W, ele será menor que H e maior ou igual a zero. Depois a posição da coluna basta pegar o resto da divisão de X por W, ele será a coluna de X e será menor que W e maior ou igual a zero.