Necesito ayuda con mi codigo en C

Iniciado por ulquiorra03, 23 Noviembre 2017, 03:43 AM

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

ulquiorra03

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










Serapis

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

Erius

#2
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.......

MAFUS

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.