Hola buenas, he estado mirando la documentación del lenguaje y no he encontrado ninguna función que desordene aleatoriamente un array o una estructura en función de uno de sus campos.
He visto que para ordenación está bastante completa la cosa, hay 3 funciones distintas, pero para desordenar no he sido capaz de encontrar nada al respecto.
Tiene el lenguaje alguna función para desordenar aleatoriamente un vector o struct?
Lo que quiero hacer es desordenar una baraja de cartas, tengo las los datos de las cartas de esta manera:
STRUCT BARAJA_DE_10[9];
INT _CARTA;
STRING _LETRA;
END
en el campo_carta guardo un código identificador de un gráfico que corresponde a la carta,algo así como: 1,1,2,2,3,3,4,4,5,5, que representan las 5 parejas de una baraja de 10 cartas, y en _letra guardo algo así: a,a,b,b,c,c,d,d,e,e; y lo que me gustaría hacer es desordenar la estructura en función del campo _letra pero no he sido capaz de encontrar algo con lo que hacerlo de forma automática.
no, para desordenar nada... es una caracteristica rara...
Ok, voy a hacerla para el juego que estoy montando y la colgaré el recursos por si le sirve a alguien.
para desordenar lo unico q se me ocurre es q tengas otra struct con 10 registros, te creas una funcion que elija aleatoriamente un registro de la primera struct y te lo meta en otro aleatorio de la segunda struct, luego cuando ya tienes la segunda struct hecha pero aleatoriamente ordenados, haces una copia a la primera struct registro por registro.
Espero te sirva.
O más facil, sacas números aleatorios entre 0 y la posición máxima de la array y los vas intercambiando.
Quote from: Yawin on March 17, 2012, 10:08:32 AM
O más facil, sacas números aleatorios entre 0 y la posición máxima de la array y los vas intercambiando.
Si, en algo así he estado pensando, creo que será la solución mas simple, por ejemplo para asegurar la aleatoriedad hacer 50 cambios mas o menos asi:
Gracias por las ideas. :-*
Al final lo he montado exactamente como decia Yawin, y funciona perfecto ;D
Por si a alguien le sirve en el futuro cuelgo el source de la función, es sencillo modificarla para cualquier uso personal.
No sale bien el código no se por que, lo dejo como un archivo de texto mejor.