Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: SojatDotar en 19 Octubre 2015, 21:47 PM

Título: Recorrido de matriz diagonal secundaria c++
Publicado por: SojatDotar en 19 Octubre 2015, 21:47 PM
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;
}
Título: Re: Recorrido de matriz diagonal secundaria c++
Publicado por: engel lex en 19 Octubre 2015, 22:12 PM
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 ;)
Título: Re: Recorrido de matriz diagonal secundaria c++
Publicado por: SojatDotar en 19 Octubre 2015, 22:28 PM
no comprendo bien
Título: Re: Recorrido de matriz diagonal secundaria c++
Publicado por: geeke en 21 Octubre 2015, 00:07 AM
#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;
}
Título: Re: Recorrido de matriz diagonal secundaria c++
Publicado por: SojatDotar en 21 Octubre 2015, 04:10 AM
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