Hola Sergio, aquí tienes un ejemplo de como podrías hacer esto para una matriz de 5x5. Espero te sirva. Saludos.
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int matriz[5][5], fila=0, columna=0, filaActual=0, primeraFila=0, ultimaFila=4, columnaActual=0, primeraColumna=0, ultimaColumna=4, bandera=0;
bool avanzarFila=false, avanzarColumna=true;
matriz[0][0]=1;
matriz[0][1]=2;
matriz[0][2]=3;
matriz[0][3]=4;
matriz[0][4]=5;
matriz[1][0]=6;
matriz[1][1]=7;
matriz[1][2]=8;
matriz[1][3]=9;
matriz[1][4]=10;
matriz[2][0]=11;
matriz[2][1]=12;
matriz[2][2]=13;
matriz[2][3]=14;
matriz[2][4]=15;
matriz[3][0]=16;
matriz[3][1]=17;
matriz[3][2]=18;
matriz[3][3]=19;
matriz[3][4]=20;
matriz[4][0]=21;
matriz[4][1]=22;
matriz[4][2]=23;
matriz[4][3]=24;
matriz[4][4]=25;
for(int i=0; i<19; i++)
{
if(avanzarColumna)
{
cout<<matriz[filaActual][columna]<<"...";
if(bandera%2==0)
{
columna++;
if(columna==ultimaColumna)
{
cout<<matriz[filaActual][columna]<<"...";
columnaActual=ultimaColumna;
ultimaColumna--;
columna=ultimaColumna;
avanzarColumna=false;
avanzarFila=true;
fila++;
continue;
}
}
else
{
columna--;
if(columna==primeraColumna)
{
cout<<matriz[filaActual][columna]<<"...";
columnaActual=primeraColumna;
primeraColumna++;
columna=primeraColumna;
avanzarColumna=false;
avanzarFila=true;
continue;
}
}
}
if(avanzarFila)
{
cout<<matriz[fila][columnaActual]<<"...";
if(bandera%2==0)
{
fila++;
if(fila==ultimaFila)
{
cout<<matriz[fila][columnaActual]<<"...";
filaActual=ultimaFila;
ultimaFila--;
fila=ultimaFila;
avanzarFila=false;
avanzarColumna=true;
bandera++;
continue;
}
}
else
{
fila--;
if(fila==primeraFila)
{
primeraFila++;
filaActual=primeraFila;
fila=primeraFila;
avanzarFila=false;
avanzarColumna=true;
bandera++;
continue;
}
}
}
}
return 0;
}
El programa fue realizado en Zinjai por si lo quieres compilar para probarlo.
- 2016-11-12 14:29:52
-
Me gusta(0)