Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: DaveTheKing en 1 Junio 2016, 20:28 PM

Título: Cómo generar una matriz que se llene automaticamente de arriba hacia abajo?
Publicado por: DaveTheKing en 1 Junio 2016, 20:28 PM
Hola, mi duda es:
Cómo puedo generar una matriz en c++ que se llene automaticamente de arriba hacia abajo y otra que sea inversa?

:D :D :D :D :D :D :D :D :D
Espero que me puedan ayudar  ;)
Título: Re: Cómo generar una matriz que se llene automaticamente de arriba hacia abajo?
Publicado por: engel lex en 1 Junio 2016, 20:44 PM
con n ciclos anidados, donde n es la cantidad de dimensiones de la matriz

realmente tu pregunta carece un poco de sentido si no es esa la respuesta experada
Título: Re: Cómo generar una matriz que se llene automaticamente de arriba hacia abajo?
Publicado por: DaveTheKing en 1 Junio 2016, 21:17 PM
Quizá si me expliqué un poco mal... mira, lo que busco hacer es:
Una matriz que se llene en automatico desde el 1 hasta n elementos, por ejemplo:

[1]   [2]   [3]   [4]  [5]
[6]   [7]   [8]   [9] [10]
[11] [12] [13] [14] [15]
[16] [17] [18] [19] [20]

Y una que esté al revés:

[16][15][14][13]
[12][11][10] [9]
[8]  [7] [6]  [5]
[4]  [3] [2]  [1]
Título: Re: Cómo generar una matriz que se llene automaticamente de arriba hacia abajo?
Publicado por: AlbertoBSD en 1 Junio 2016, 23:42 PM
Por que complicarse con una matriz bidimencional si facilmente puedes llenar un arreglo lineal en orden ascendente o descendente y tratarla como matriz... A que me refiero aqui esta en video

[youtube=640,360]https://www.youtube.com/watch?v=U-zA-VvOllM[/youtube]

Básicamente seria

#define N 4  //Filas
#define M 5  //Columnas

int main(){
 int i = 0;
 int max = M*N;
 int matriz_decendente[M*N],matriz_ascendente[M*N];
 while(i<max){
  matriz_decendente[i] = max - i;
  matriz_ascendente[i] = i+1;
  i++;
 }
}


Y posteriormente mostrarla en pantalla como se describe en el video.

O si prefieres usar un arreglo bidimencional y complicar  el calculo un poco tenemos que.

#define N 4  //Filas
#define M 5  //Columnas

int main(){
 int i = 0,j;
 int max = M*N;
 int matriz_decendente[N][M],matriz_ascendente[N][M];
 while(i<N){
  j=0;
   while(j<M){
     matriz_decendente[i][j] = max - (i*M) -j;
     matriz_ascendente[i][j] = (i*M) +j +1;
    j++;
  }
  i++;
 }
}
Título: Re: Cómo generar una matriz que se llene automaticamente de arriba hacia abajo?
Publicado por: class_OpenGL en 2 Junio 2016, 00:42 AM
O... podrías interpretar el arreglo bidimensional como uno unidimensional:

#include <stdio.h>

#define N 4  //Columnas
#define M 5  //Filas

int main(){
int i = 0, j;
int max = M*N;
int matriz_descendente[M][N],matriz_ascendente[M][N];

while(i < max){
((int *)matriz_descendente)[i] = max - i;
((int *)matriz_ascendente)[i] = i+1;
i++;
}

for(i = 0; i < M; i++) {
for(j = 0; j < N; j++)
fprintf(stdout, "%i ", matriz_ascendente[i][j]);

fputc('\n', stdout);
}
fputc('\n', stdout);

for(i = 0; i < M; i++) {
for(j = 0; j < N; j++)
fprintf(stdout, "%i ", matriz_descendente[i][j]);

fputc('\n', stdout);
}

return 0;
}
Título: Re: Cómo generar una matriz que se llene automaticamente de arriba hacia abajo?
Publicado por: geeke en 2 Junio 2016, 01:46 AM
Cita de: AlbertoBSD en  1 Junio 2016, 23:42 PM
O si prefieres usar un arreglo bidimencional y complicar  el calculo un poco tenemos que

Porqué no?  :silbar:

Código (cpp) [Seleccionar]
int ascendente = 1;
int descendente = M*N;

matriz_decendente[i][j] = descendente--;
matriz_ascendente[i][j] = ascendente++;
Título: Re: Cómo generar una matriz que se llene automaticamente de arriba hacia abajo?
Publicado por: HardForo en 2 Junio 2016, 14:09 PM
Las respuestas fueron más que buenas pero en pocas palabras es como si imprimieras pero en vez de meter un salto de linea, incrementas el # de fila.
Título: Re: Cómo generar una matriz que se llene automaticamente de arriba hacia abajo?
Publicado por: DaveTheKing en 20 Enero 2017, 06:30 AM
Muchas gracias a vos por su apoyo, fueron gran ayuda y resolvieron mis dudas, en verdad os agradezco.