C/Visual C - Matriz en forma de espiral

 
Vista:

Matriz en forma de espiral

Publicado por k_mila (1 intervención) el 04/04/2007 16:27:47
Me pueden ayudar a hacer en C o en pseudo una matriz k se llene en forma de espiral comienza en forma vertical y que sume sus diagonales... pleaseeee
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Matriz en forma de espiral

Publicado por Nacho (6 intervenciones) el 05/04/2007 22:11:32
¿Que se llene en forma de espiral? ¿Muestras los datos en cada paso del llenado para que se note?

Supondré que sí. En principio, para moverte deberías tener incrementos en X y en Y, porque vas cambiando de dirección:

Inicialmente, el incremento de Y sería 1, para que baje (y el de X sería 0); cuando llegues a la fila inferior, incrX = 1 e incrY = 0 para avanzar a la derecha, luego incrY = -1 e incrX = 0, para que suba y así.

Con eso dibujas el "cuadrado exterior".

Para que sea una espiral, debe irse "cerrando", de modo que además necesitarías memorizar el valor Xmaximo, Xminimo, Ymaximo e Yminimo, que actualizas cada vez que cambias de dirección (es decir: inicialmente Xminimo = 0; en cuanto haces el primer cambio de dirección Xminimo = 1 (ya has llenado la primera columna), en el segundo cambio de dirección, Ymaximo para de ser n a ser n-1 (has llenado la última fila) y así sucesivamente.

Lo de sumar las diagonales es trivial ;-)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Matriz en forma de espiral

Publicado por yelireth (1 intervención) el 08/09/2008 21:34:03
xfa... necesito saber como hacer la matriz en espiral con numeros consecutivos... y q sea 5*5... con funciones
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Matriz en forma de espiral

Publicado por Carlos (1 intervención) el 26/09/2008 01:38:37
Me encontre este código y funciona bien, el código fuente de la función es:

void recorrer(int matriz[5][5], int x_inicio, int x_final, int y_inicio, int y_final)
{
int i;

if (!(x_inicio==x_final))
{
for (i=y_inicio; i<=y_final; i++)
{
cout<<matriz[x_inicio][i];
}

for (i= x_inicio + 1; i<=x_final -1; i++)
{
cout<<matriz[i][y_final];
}

for (i= y_final; i>=y_inicial; i--)
{
cout <<matriz[x_final][i];
}

for (i= x_final - 1; i>=x_inicial + 1; i--)
{
cout<<matriz[i][y_inicial];
}

recorrer(matriz, x_inicio+1, x_final-1, y_inicio+1, y_final-1);
}
else
{
//for (i=y_inicio; i<=y_final; i++)
//cout<<matriz[x_inicio][i];
}

}

int main()
{
int matriz[5][5];
int N=5;

// Primero llenar la matriz
//
//
//

recorrer(matriz, 1, N, 1, N);

return 0;
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar