Matrices

Hola,necesito ayuda acerca de como cargar una matriz en forma espiral.

1 respuesta

Respuesta
1
Si a lo que te refieres es a que la vas a llenar de la siguiente forma, supongamos que la matriz es de 3, 4 (3 renglones y 4 columnas):
1 2 3 4
10 11 12 5
9 8 7 6
el ejemplo siguiente lo hace:
#include <stdio.h>
void MostrarMatriz(int matriz[][10], int n, int m);
int main(void) {
int num, count;
int i, j;
int n, m;
int matriz[10][10];
int _matriz[10][10]={0};
int dirX, dirY;
n = 10; //numero de renglones de la matriz
m = 10; //numero de columnas de la matriz
num = n*m;
count = 0;
dirX = 1;
dirY = 0;
for (i=j=0; count < num; count++) {
matriz[j] = count+1; //rand()%100;
_matriz[j] = 1;
switch (dirX) {
case 1 :
j++;
if (j==m || _matriz[j]) {
j--;
i++;
dirX = 0;
dirY = -1;
}
continue;
case -1 :
j--;
if (j==-1 || _matriz[j]) {
j++;
i--;
dirX = 0;
dirY = 1;
}
continue;
}
switch (dirY) {
case 1 :
i--;
if (i==-1 || _matriz[j]) {
i++;
j++;
dirY = 0;
dirX = 1;
}
continue;
case -1 :
i++;
if (i==n || _matriz[j]) {
i--;
j--;
dirY = 0;
dirX = -1;
}
continue;
}
}
MostrarMatriz(matriz, n, m);
return 0;
}
void MostrarMatriz(int matriz[][10], int n, int m) {
int i, j;
printf("Matriz(%d,%d)\n\n", n, m);
for (i=0; i<n; i++) {
for (j=0; j<m; j++) {
printf("% 4d", matriz[j]);
}
printf("\n");
}
}

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas