Hola,soy nuevo en el foro,necesito ayuda,la cuestión es que tengo que imprimir una matriz de esta forma:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16
Y luego imprimirlas como si fuera un espejo,así :
4 3 2 1
8 7 6 5
12 11 10 9
16 15 14 13
pero llevo intentándolo un buen rato y no logro entender,si me pudieran decir como,se los agradecería,esto es lo que llevo:
///////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define REN 4 /* Constante para el número de renglones del tablero */
#define COL 4 /* Constante para el número de columnas del tablero */
void NumeraArAbID(int [REN][COL]);
void NumeraArAbDI(int [REN][COL]);
void DespliegaTablero(int [REN][COL]);
int main()
{
int tablero[REN][COL], x,y;
/* Inicializamos el generador de números aleatorios con el número de proceso */
srand(time(0));
NumeraArAbID(tablero);
DespliegaTablero(tablero);
/* A. Invocar NumeraArAbDI y DespliegaTablero */
NumeraArAbDI(tablero);
DespliegaTablero(tablero);
return 0;
}
/*De arriba hacia abajo,De izquierda a derecha.*/
void NumeraArAbID(int a[REN][COL])
{
int i,j,cont = 1;
for (i = 0; i < REN; i++)
for (j = 0; j < COL; j++)
{
a[j] = cont;
cont++;
}
}
/*De arriba hacia abajo,de Derecha a Izquierda*/
void NumeraArAbDI(int a[REN][COL])
{
int i,j,cont = 1;
for (i = REN; i =0; i++)
for (j = COL; j=0; j++)
{
a[j] = cont;
cont++;
}
}
/*Módulo que despliega todas las casillas del tablero*/
void DespliegaTablero(int a[REN][COL])
{
int i,j;
printf("\n**************************\n");
for (i = 0; i < REN; i++)
{ printf(" ");
for (j = 0; j < COL; j++)
printf("%2d ",a[j]);
printf("\n");
}
printf("\n**************************\n");
}
Olvida por un momento que estásprogramando... toma lápiz y papel y dibuja el array inicial.
Luego debajo haz lo que te piden, muy despacio, pensando y meditando que pasos has dado para llegar a ello... toma un línea (que son los primeros 4 valores del array y los ordenas al revés, solo esa línea entre sí... luego procede con la siguiente línea que va del índice 3 al 7 (valores 5 al 8)...
De hecho antes de nada intenta ordenar del revés 4 elementos entre si:
16, 21, 33, 42
cuando lo consigas intentar ordenar 5 valores dle revés, entre sí, por ejemplo estos.
16, 21, 27, 33, 42
y cuando lo consigas, tendrás las ideas necesarias para hacerlo a todo un array cada 4 elementos como te piden...
Programar es pensar y conocer el lenguaje (en el que s eprograma), lo uno sin lo otro, no funciona.
p.d.: Por cierto, puedes explicarme en qué te sirve esta línea para intentar resolver el problema:?
Citar/* Inicializamos el generador de números aleatorios con el número de proceso */
srand(time(0));
El código esta en C++, espero te guíes...
#include <iostream>
using namespace std;
int matriz[100][100],filas,columnas; //Aquí estoy declarando las variables..
int main(int argc, char *argv[]) {
cout<<"Digite el numero de filas de la matriz: "; cin>>filas;
cout<<"Digite el numero de columnas de la matriz: "; cin>>columnas;
//Aquí el usuario ya empieza a llenar la matriz de acuerdo al numero de filas y
columnas que introdujo anteriormente.
for(int i=1;i<=filas;i++){
for(int j=1;j<=columnas;j++){
cout<<"Introduzca un numero ["<<i<<"]["<<j<<"]: ";
cin>>matriz[j];
}
}
cout<<endl; //Aquí doy un pequeño salto de linea para que se vea mas elegante
al usuario
//Aqui muestro la matriz priginal que lleno el usuario.
for(int i=1;i<=filas;i++){
for(int j=1;j<=columnas;j++){
cout<<matriz[j];
}
cout<<"\n";
}
cout<<endl; //Aqui igual otro salto de linea.
//Aqui ya viene la respuesta de tu pregunta.
for(int i=1;i<=filas;i++){
for(int j=filas;j>0;j--){
cout<<matriz[j];
}
cout<<"\n";
}
return 0;
}
Espero te ayude.......
Fíjate en este for:
for (i = REN; i =0; i++)
Si REN es un número mayor que 0 entonces i tendrá que decrecer, sinó irá aumentando indefinidamente.
En la condición de paro dices i = 0 y esto no es una condición sino una asignación. Supongo que querrías decir i >= 0;
Tienes errores de este tipo.