Cómo generar una matriz que se llene automaticamente de arriba hacia abajo?

Iniciado por DaveTheKing, 1 Junio 2016, 20:28 PM

0 Miembros y 1 Visitante están viendo este tema.

DaveTheKing

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  ;)

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

DaveTheKing

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]

AlbertoBSD

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++;
 }
}
Donaciones
1Coffee1jV4gB5gaXfHgSHDz9xx9QSECVW

class_OpenGL

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;
}

Programador aficionado. Me quiero centrar en programar videojuegos. La API que uso para crearlos es OpenGL

geeke

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++;

HardForo

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.
HardForo:  foro de Hardware y programación

Se buscan Mods y colaboradores *

DaveTheKing

Muchas gracias a vos por su apoyo, fueron gran ayuda y resolvieron mis dudas, en verdad os agradezco.