Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema con Matriz y Random

Estas en el tema de Problema con Matriz y Random en el foro de C/C++ en Foros del Web. Que tal amigos, espero que se encuentren bien. Tengo un problema que me tiene loco, y se trata de que a la hora de llenar ...
  #1 (permalink)  
Antiguo 04/08/2009, 16:29
Avatar de moendo  
Fecha de Ingreso: agosto-2008
Ubicación: Caracas
Mensajes: 18
Antigüedad: 15 años, 7 meses
Puntos: 0
Problema con Matriz y Random

Que tal amigos, espero que se encuentren bien.

Tengo un problema que me tiene loco, y se trata de que a la hora de llenar una matriz con un for, con valores aleatorios, no quiero que me muestre ningun valor en la posicion m[0][0] de la matriz. Ya que se trata de un juego en el que voy a ordenar de menor a mayor los numeros, pero dejando siempre una posicion vacia para poder mover los otros contenidos y ordenar a mi voluntad.

Es como los juegos que andan por ahi parecidos a rompecabezas, que tienen un cuadrito vacio, para poder tener un espacio para mover las demas piezas y dejar en orden el dibujo que tiene o la serie de numeros o letras.

Esto es lo que llevo de codigo, solo esto por ahora:

Código:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define num_elem 15

void juego(int m[4][4])
{ int i,j;
	srand((unsigned) time(NULL));
	for(i=0;i<4;i++)
	{
		for(j=0;j<4;j++)
		{
			m[i][j]=rand() % num_elem;
			
		}
	}
	for(i=0;i<4;i++)
	{	
 		printf("\n");
 		for(j=0;j<4;j++)
		{
			printf("%d\t",m[i][j]);
		}
	}


}

main()
{ int m[4][4];

	juego(m);
	system("pause");
}
Espero que puedan ayudarme

Saludos cordiales,

moendo
  #2 (permalink)  
Antiguo 04/08/2009, 18:03
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: Problema con Matriz y Random

hola

debes inicializar la j a 1

quedaria algo asi:

for(j=1;j<4;j++)
{
m[i][j]=rand() % num_elem;

}
  #3 (permalink)  
Antiguo 04/08/2009, 19:10
Avatar de moendo  
Fecha de Ingreso: agosto-2008
Ubicación: Caracas
Mensajes: 18
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema con Matriz y Random

que tal Anubis, gracias por tu respuesta.

olvidé mencionar que ya había trabajado con eso, pero no funcionó. Ni con j=1 ni con i=1, ya que cuando lo compilaba y ejecutaba, en lugar de no mostrarme la primera posicion, lo que hacia era que me mostraba por pantalla numeros ilogicos que no tenian nada que ver con el rango que le habia definido como maximo con #define, por ejemplo: 204050691, en lugar de como máximo 15.

Vamos a colocarles una imagen de ejemplo para que tengan una idea de como quiero que quede ordenada la matriz (aleatoriamente cada vez que comience el juego).

**img13.imageshack.us/img13/6092/vistapreviadematriz.jpg**

Asi es que necesito que aparezca la matriz, con los valores que alli muestro del 1 al 15, sin repetirse pero que en la primera posicion no aparezca nada. Ya que ese es el espacio que el usuario tendrá disponible para mover los numeros adyacentes y asi poder ordenar de menor a mayor la matriz manualmente.


Tendran alguna idea?


Saludos
  #4 (permalink)  
Antiguo 05/08/2009, 08:23
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: Problema con Matriz y Random

pienso que inicializando la m a 0 es lo que falta

void juego(int m[4][4])
{ int i,j;
m[0][0] = 0; // esta es la linea que faltaria para que la posicion esa no aparezca basura
srand((unsigned) time(NULL));
for(i=0;i<4;i++)
  #5 (permalink)  
Antiguo 05/08/2009, 09:43
 
Fecha de Ingreso: junio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Prueba con esto...

Prueba colocando directamente el numero 15 en vez de la definicion num_elem, e inicializa el arreglo asi: *m = {0} y prueba si te sigue saliendo el mismo error, ya que parece que lo que esta mostrando es contenido basura, en la semilla quitale ese unsigned, ah y agregale mas una unidad en la asignacion de los numeros aleatorios ya que se almacenaran numeros del 0 al 14. Bye

Última edición por Evoltd3v; 05/08/2009 a las 09:49
  #6 (permalink)  
Antiguo 05/08/2009, 10:19
Avatar de moendo  
Fecha de Ingreso: agosto-2008
Ubicación: Caracas
Mensajes: 18
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema con Matriz y Random

hola que tal, gracias a ambos por las amables respuestas.

He hecho lo que cada uno me ha propuesto sin resultados positivos, les dejo esta nueva imagen pero con lo que me arroja al momento de inicializar j=1, otra cuando inicializo i=1 y cuando ambas estan inicializadas en 0:

for ( i = 1 ... ):
img19.imageshack.us/i/92499618.jpg/

for ( j = 1 ... ):
img199.imageshack.us/i/38568776.jpg/

y en este caso, lo hice con los dos int = 0, y me muestra bien los numeros, pero lo que necesito es una posicion VACIA, no con un cero (como me decias con m[0][0] = 0;) en todo caso sería un espacio, porque con un cero no seria propicio.

img199.imageshack.us/i/regularu.jpg/
  #7 (permalink)  
Antiguo 05/08/2009, 10:46
Avatar de Anubis_Slash  
Fecha de Ingreso: mayo-2009
Ubicación: aqui y haya
Mensajes: 173
Antigüedad: 14 años, 10 meses
Puntos: 5
Respuesta: Problema con Matriz y Random

moendo

como bien te habia dicho pon las lineas exactamente como te indico aqui

void juego(int m[4][4])
{ int i,j;
m[0][0] = 0; // esta es la linea que faltaria para que la posicion esa no aparezca basura
srand((unsigned) time(NULL));
for(i=0;i<4;i++)

si te sigue marcando algun error espero nos lo hagas saber
  #8 (permalink)  
Antiguo 05/08/2009, 11:11
Avatar de moendo  
Fecha de Ingreso: agosto-2008
Ubicación: Caracas
Mensajes: 18
Antigüedad: 15 años, 7 meses
Puntos: 0
Respuesta: Problema con Matriz y Random

que tal, me acaban de ayudar un poco, un amigo en persona.

lo que hice fue que en el for que imprime en pantalla los valores de la matriz, coloque una condicion que me diga que donde el random me genere un 0, lo coloque como un espacio vacio.


Si no les quedó claro, por favor haganmelo saber


Saludos
  #9 (permalink)  
Antiguo 10/08/2009, 16:14
 
Fecha de Ingreso: junio-2009
Mensajes: 6
Antigüedad: 14 años, 9 meses
Puntos: 0
Espero que esta vez si

Hola, nose si aun te servira pero ahi va:


Código HTML:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define num_elem 15
 
void juego(int m[4][4])
{ int i, j; 
 
 
    srand((unsigned) time(NULL));
    for(i=0;i<4;i++)
    {
        for(j=0;j<4;j++)
        {
            m[i][j] = rand() % num_elem + 1;            
        }
    }
 
m[0][0] = 0;
printf("\n%5c", ' ');
 
for(j = 1; j < 4; j++)
printf("%5d", m[0][j] );
 
 
    for(i=1;i<4;i++)
    {    
        printf("\n");
 
        for(j=0;j<4;j++)
        {
            printf("%5d\t", m[i][j]);
        }
    }
 
 
}
 
main()
{ int m[4][4];
 
    juego(m);
    system("pause");
 
}
  #10 (permalink)  
Antiguo 11/08/2009, 09:24
 
Fecha de Ingreso: agosto-2009
Mensajes: 18
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema con Matriz y Random

Por si aun no consigues lo que buscabas tratare yo..

#include <stdio.h>

#define fila 4
#define col 4
#define num_elementos 15

int main()
{
int i,j;
int mat[fila][col] = {0};
for (i=0; i<fila; i++) {
for (j=0; j<col; j++) {
if (mat[i][j] != mat[0][0]) {
mat[i][j] = rand() & num_elementos + 1;
}
}
}
for (i=0; i<fila; i++) {
for (j=0; j<col; j++) {
printf ("%d ", mat[i][j]);
}
printf ("\n");
}
}
  #11 (permalink)  
Antiguo 23/02/2010, 18:10
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: Problema con Matriz y Random

Disculpa!!, se que ya tiene rato este "problemita", pero estoy ahorita en las mismas, y me quede igual , en lo que el decia de cambiar los ceros por espacios, pero 1.- son diferentes tipos, y 2.- si salen 2 ceros?, espero y puedan ayudarme
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:01.