elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  llenar matriz con Random en Dev C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: llenar matriz con Random en Dev C  (Leído 28,055 veces)
binaryum

Desconectado Desconectado

Mensajes: 6


Ver Perfil
llenar matriz con Random en Dev C
« en: 19 Julio 2010, 14:58 pm »

Hola amigos, que tal ? ... soy nuevo en este foro y me parece espectacular ! ;-)

Bueno tengo una duda , necesito hacer un tipo de "puzzle con numeros" , con matrices (o arreglos bidimensionales) ,y utilizo el random para llenar la matriz pero me repite los numeros .. que se haria en ese caso para que no me repita los numeros  ?  (ojo : ya tengo la semilla ).

 les agradezco Que me ayuden

Les dejo un pedazo de codigo que hice :

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <time.h>
#define TAM 12
main ()
{
  srand (time (NULL));
 int M[TAM][TAM];
 
 int i,x,alo;
 int filas,columnas,a=0,temp;
 printf ("Introduzca el numero de filas : ");
 scanf ("%d",&filas);
 printf ("\nIntroduzca el numero de columnas : ");
 scanf  ("%d",&columnas);
 temp = filas*columnas;
 
 for (i = 0;i<filas;i++)
 {
    printf ("\n");
     
     for (x =0;x<columnas;x++)
     {
       alo = rand () % temp;
       a = alo;
       M
  • =a;
        printf ("%4d",M
  • );
     }
     printf ("\n");
 }
getch ();
}

Ahí esta, mi idea es que recorra la matriz y si un numero esta repetido que cree  otro aleatorio hasta que no sea igual y ese sea el que asigne..

Gracias de antemano amigos programadores ..


En línea

Og.


Desconectado Desconectado

Mensajes: 822


Aprendiendo de la vida


Ver Perfil
Re: llenar matriz con Random en Dev C
« Respuesta #1 en: 19 Julio 2010, 18:41 pm »

1.- usa geshi
2.- usas librerias inecesarias para tu codigo (conio y stdlib)
3.- no defines el tipo de retorno de la funcion main
4.-intenta asi:
Código
  1. #include <stdio.h>
  2. #include <time.h>
  3. int main(void)
  4. {
  5. int y, x, i, g, temp, filas, columnas;
  6.  
  7. srand (time (NULL));
  8.  
  9. printf ("Introduzca el numero de filas : ");
  10. scanf ("%i",&filas);
  11. printf ("\nIntroduzca el numero de columnas : ");
  12. scanf  ("%i",&columnas);
  13.  
  14. int matriz[filas][columnas];
  15. temp = filas*columnas;
  16.  
  17. for(i=0; i<filas; i++)
  18.  for(g=0; g<columnas; g++)
  19.   matriz[i][g] = 0;
  20.  
  21. for(i=1; i<=temp; i++)
  22. {
  23.  do
  24.  {
  25.   y = rand() % filas;
  26.   x = rand() % columnas;
  27.  }while(matriz[y][x]);
  28.  matriz[y][x] = i;
  29. }
  30.  
  31. for(i=0; i<filas; i++)
  32. {
  33.  for(g=0; g<columnas; g++)
  34.    printf("%i\t", matriz[i][g]);
  35.  printf("\n");
  36. }
  37. return 0;
  38. }

Saludos!


En línea

|-
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
***
Desconectado Desconectado

Mensajes: 3.069


/^$/


Ver Perfil WWW
Re: llenar matriz con Random en Dev C
« Respuesta #2 en: 19 Julio 2010, 20:35 pm »

1.- usa geshi
2.- usas librerias inecesarias para tu codigo (conio y stdlib)
3.- no defines el tipo de retorno de la funcion main
4.-intenta asi:
Código
  1. #include <stdio.h>
  2. #include <time.h>
  3. int main(void)
  4. {
  5. int y, x, i, g, temp, filas, columnas;
  6.  
  7. srand (time (NULL));
  8.  
  9. printf ("Introduzca el numero de filas : ");
  10. scanf ("%i",&filas);
  11. printf ("\nIntroduzca el numero de columnas : ");
  12. scanf  ("%i",&columnas);
  13.  
  14. int matriz[filas][columnas];
  15. temp = filas*columnas;
  16.  
  17. for(i=0; i<filas; i++)
  18.  for(g=0; g<columnas; g++)
  19.   matriz[i][g] = 0;
  20.  
  21. for(i=1; i<=temp; i++)
  22. {
  23.  do
  24.  {
  25.   y = rand() % filas;
  26.   x = rand() % columnas;
  27.  }while(matriz[y][x]);
  28.  matriz[y][x] = i;
  29. }
  30.  
  31. for(i=0; i<filas; i++)
  32. {
  33.  for(g=0; g<columnas; g++)
  34.    printf("%i\t", matriz[i][g]);
  35.  printf("\n");
  36. }
  37. return 0;
  38. }

Saludos!

Faltó la inclusión de stdlib.h, no debería compilar.
En línea

Código
  1. (( 1 / 0 )) &> /dev/null || {
  2. echo -e "stderrrrrrrrrrrrrrrrrrr";
  3. }
  4.  
http://leonardogtzr.wordpress.com/
leogutierrezramirez@gmail.com
binaryum

Desconectado Desconectado

Mensajes: 6


Ver Perfil
Re: llenar matriz con Random en Dev C
« Respuesta #3 en: 20 Julio 2010, 01:34 am »

1.- usa geshi
2.- usas librerias inecesarias para tu codigo (conio y stdlib)
3.- no defines el tipo de retorno de la funcion main
4.-intenta asi:
Código
  1. #include <stdio.h>
  2. #include <time.h>
  3. int main(void)
  4. {
  5. int y, x, i, g, temp, filas, columnas;
  6.  
  7. srand (time (NULL));
  8.  
  9. printf ("Introduzca el numero de filas : ");
  10. scanf ("%i",&filas);
  11. printf ("\nIntroduzca el numero de columnas : ");
  12. scanf  ("%i",&columnas);
  13.  
  14. int matriz[filas][columnas];
  15. temp = filas*columnas;
  16.  
  17. for(i=0; i<filas; i++)
  18.  for(g=0; g<columnas; g++)
  19.   matriz[i][g] = 0;
  20.  
  21. for(i=1; i<=temp; i++)
  22. {
  23.  do
  24.  {
  25.   y = rand() % filas;
  26.   x = rand() % columnas;
  27.  }
  28.  while(matriz[y][x]);
  29.  matriz[y][x] = i;
  30. }
  31.  
  32. for(i=0; i<filas; i++)
  33. {
  34.  for(g=0; g<columnas; g++)
  35.    printf("%i\t", matriz[i][g]);
  36.  printf("\n");
  37. }
  38. return 0;
  39. }

Saludos!

Oyeme gracias me sirvio mucho ,  (aunque tuve que hacer ligeros cambios para que pudiera compilar en Dev c++) , pero esta buenisimo !!! gracias otra ves .  ;-)

Por cierto me podrias explicar que hace este codigo que no lo entiendo muy bien

Código
  1. for(i=1; i<=temp; i++)
  2. {
  3.  do
  4.  {
  5.   y = rand() % filas;
  6.   x = rand() % columnas;
  7.  }
  8.  while(matriz[y][x]);
  9.  matriz[y][x] = i;
  10. }
  11.  
  12.  
En línea

.:BlackCoder:.


Desconectado Desconectado

Mensajes: 388


Cada dia C++!!


Ver Perfil
Re: llenar matriz con Random en Dev C
« Respuesta #4 en: 20 Julio 2010, 01:49 am »

El codigo es muy ingenioso... Ya que inicializa la matriz a 0 y luego en:
Código
  1.  do
  2.  {
  3.   y = rand() % filas;
  4.   x = rand() % columnas;
  5.  }
  6.  while(matriz[y][x]);

Lo que hace es darle valores aleatorios a x e y... Pero no sale del do while si matriz[y]
  • tiene un valor distinto de 0... Al tener el valor 0 si sale y le da el valor de la variable del for... En el while, la condicion es que haya un valor en matriz[y]
  • distinto de 0... Es por eso que si tiene un valor de 0 sale y asigna el valor de i...

Saludos... Muy chevere el codigo Og.  :)

En línea

"No te esfuerzes por saber mas, esfuerzate por ser el mejor en lo que sabes... Y asi sabras mas" .:BlackCoder:. jajaja



MIG80

Desconectado Desconectado

Mensajes: 38



Ver Perfil
Re: llenar matriz con Random en Dev C
« Respuesta #5 en: 20 Julio 2010, 04:26 am »

Código
  1. temp=filas*columnas;
  2. ...
  3. for(i=1;i<=temp;i++)
  4. {
  5.  do
  6.  {
  7.     y = rand() % filas;
  8.     x = rand() % columnas;
  9.  } while(matriz[y][x]);
  10.  matriz[y][x]=i;
  11. }
  12.  
Excelente.. ;-)
« Última modificación: 20 Julio 2010, 05:20 am por czealt » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
llenar una matriz en c++
Programación C/C++
gak-f5 1 44,057 Último mensaje 28 Mayo 2012, 15:43 pm
por STANHMAL
programa en c que al llenar una matriz 4x4 no me acepte valores repetidos
Programación C/C++
sanchez2011 1 10,478 Último mensaje 4 Junio 2012, 04:17 am
por STANHMAL
matriz en C de 5x5, random, condicionarla ?
Programación C/C++
sylveonsan 1 10,038 Último mensaje 30 Octubre 2013, 14:49 pm
por eferion
LLENAR UNA MATRIZ DISPERSA LISTA TRIPL
Programación C/C++
deibenK 3 5,127 Último mensaje 28 Marzo 2014, 11:14 am
por Eternal Idol
numeros random en una matriz
Programación C/C++
taku86 0 1,878 Último mensaje 23 Abril 2018, 01:39 am
por taku86
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines