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 ;)
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
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]
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++;
}
}
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;
}
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:
int ascendente = 1;
int descendente = M*N;
matriz_decendente[i][j] = descendente--;
matriz_ascendente[i][j] = ascendente++;
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.
Muchas gracias a vos por su apoyo, fueron gran ayuda y resolvieron mis dudas, en verdad os agradezco.