Buenas, me podrían ayudar en hacer el recorrido de una matriz de la diagonal secundaria, una matriz de entero de modo que tenga se vea así http://prntscr.com/8ssapl (http://prntscr.com/8ssapl) lo he pensando de varias forma, pero no logro que se vea así, el código que tengo es
#include <iostream>
using namespace std;
int main () {
int mat[4][4];
int cont=1;
for(int i=0;i<4;i++){
for(int j=0;j<4;j++){
mat[j][i]=cont++;
}
}
int k=0,r=0;
for(int i=0; i<7; i++){
r=(i/4);
for(int j=k; j>=0; j--){
cout << mat[r][j]<<" ";
r++;
}
cout << endl;
k++;
k-=k/4;
}
cin.get();
return 0;
}
fijate algo, tu recorrido sería
0,0
0,1|1,0
0,2|1,1|2,0
0,3|1,2|2,1|3,0
1,3|2,2|3,1
2,3|3,2
3,3
si las coordenadas son(X,Y):
fijate que cada par suma el numero del ciclo donde está (primero 0, 1, etc)...
primero, la coordenada inicial se le suma 1 en Y, hasta que y llega al tope, entonces se le suma 1 a X hasta que ambos llegan al tope donde es el fin
sobre cada ronda, siempre le resta uno a la Y y se lo sumas a la X, terminando donde Yfinal = Xinicial...
creo que esto es suficiente info para que te pienses el algoritmo de recorrido ;)
no comprendo bien
#include <stdio.h>
int main(void)
{
int matriz[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int x = 0, y = 0, i;
for(;;)
{
printf("%*s", ((y == 0) ? 3 - x : y) * 2, "");
for(i = 0; x - i >= 0 && y + i < 4 ; i++)
{
printf("%3d ", matriz[x - i][y + i]);
}
printf("\n");
if(x < 3)
++x;
else if(y < 3)
++y;
else
break;
}
return 0;
}
Gracias, pero mas que el código me gustaría mas comprender su elaboración, todavía no comprendo bien como hacer el ejercicio, eso es mas que todo mi problema