Foro de elhacker.net

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
Código:
#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

Código:
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
Código
  1. #include <stdio.h>
  2.  
  3. int main(void)
  4. {
  5.    int matriz[4][4] = {{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
  6.    int x = 0, y = 0, i;
  7.  
  8.    for(;;)
  9.    {
  10.        printf("%*s", ((y == 0) ? 3 - x : y) * 2, "");
  11.        for(i = 0; x - i >= 0 && y + i < 4  ; i++)
  12.        {
  13.            printf("%3d ", matriz[x - i][y + i]);
  14.        }
  15.        printf("\n");
  16.        if(x < 3)
  17.            ++x;
  18.        else if(y < 3)
  19.            ++y;
  20.        else
  21.            break;
  22.    }
  23.    return 0;
  24. }


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