Autor
|
Tema: llenar matriz con Random en Dev C (Leído 28,045 veces)
|
binaryum
Desconectado
Mensajes: 6
|
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 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
Mensajes: 822
Aprendiendo de la vida
|
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: #include <stdio.h> #include <time.h> int main(void) { int y, x, i, g, temp, filas, columnas; printf ("Introduzca el numero de filas : "); printf ("\nIntroduzca el numero de columnas : "); int matriz[filas][columnas]; temp = filas*columnas; for(i=0; i<filas; i++) for(g=0; g<columnas; g++) matriz[i][g] = 0; for(i=1; i<=temp; i++) { do { }while(matriz[y][x]); matriz[y][x] = i; } for(i=0; i<filas; i++) { for(g=0; g<columnas; g++) } return 0; }
Saludos!
|
|
|
En línea
|
|-
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
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: #include <stdio.h> #include <time.h> int main(void) { int y, x, i, g, temp, filas, columnas; printf ("Introduzca el numero de filas : "); printf ("\nIntroduzca el numero de columnas : "); int matriz[filas][columnas]; temp = filas*columnas; for(i=0; i<filas; i++) for(g=0; g<columnas; g++) matriz[i][g] = 0; for(i=1; i<=temp; i++) { do { }while(matriz[y][x]); matriz[y][x] = i; } for(i=0; i<filas; i++) { for(g=0; g<columnas; g++) } return 0; }
Saludos! Faltó la inclusión de stdlib.h, no debería compilar.
|
|
|
En línea
|
|
|
|
binaryum
Desconectado
Mensajes: 6
|
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: #include <stdio.h> #include <time.h> int main(void) { int y, x, i, g, temp, filas, columnas; printf ("Introduzca el numero de filas : "); printf ("\nIntroduzca el numero de columnas : "); int matriz[filas][columnas]; temp = filas*columnas; for(i=0; i<filas; i++) for(g=0; g<columnas; g++) matriz[i][g] = 0; for(i=1; i<=temp; i++) { do { } while(matriz[y][x]); matriz[y][x] = i; } for(i=0; i<filas; i++) { for(g=0; g<columnas; g++) } return 0; }
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 for(i=1; i<=temp; i++) { do { } while(matriz[y][x]); matriz[y][x] = i; }
|
|
|
En línea
|
|
|
|
.:BlackCoder:.
Desconectado
Mensajes: 388
Cada dia C++!!
|
El codigo es muy ingenioso... Ya que inicializa la matriz a 0 y luego en: do { y = rand() % filas; x = rand() % columnas; } 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
Mensajes: 38
|
temp=filas*columnas; ... for(i=1;i<=temp;i++) { do { y = rand() % filas; x = rand() % columnas; } while(matriz[y][x]); matriz[y][x]=i; }
Excelente..
|
|
« Última modificación: 20 Julio 2010, 05:20 am por czealt »
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
llenar una matriz en c++
Programación C/C++
|
gak-f5
|
1
|
44,042
|
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,463
|
4 Junio 2012, 04:17 am
por STANHMAL
|
|
|
matriz en C de 5x5, random, condicionarla ?
Programación C/C++
|
sylveonsan
|
1
|
10,024
|
30 Octubre 2013, 14:49 pm
por eferion
|
|
|
LLENAR UNA MATRIZ DISPERSA LISTA TRIPL
Programación C/C++
|
deibenK
|
3
|
5,123
|
28 Marzo 2014, 11:14 am
por Eternal Idol
|
|
|
numeros random en una matriz
Programación C/C++
|
taku86
|
0
|
1,863
|
23 Abril 2018, 01:39 am
por taku86
|
|