Título: [C++] Especie de Fuerza Bruta Publicado por: PiroskY en 6 Noviembre 2010, 02:59 am Basicamente el programa funciona(deberia hacerlo) asi:
Se ingresa la cantidad de digitos segun eso, se calcula el factorial para saber cuantas distintas combinaciones hay, y se crea una matriz de esas dimensiones la matriz se inicia en 0 Se carga la primer convinacion en la matriz mientras el primer elemento de la fila sea distinto a 0, va a ir comparando numero a numero, para ver si la combinacion es la misma si es la misma la descarta y crea una nueva, si no es la misma acumula si la cantidad de acumulaciones -1 es igual al indice de fila, significa que eran todas distintas, y guarda esa convinacion es esa fila y asi hasta terminar pero bueno, eso es lo que deberia hacer, no lo que hace :P aca les tiro mi codigo: Código
Al parecer nunca llega a salir del ciclo que marque con flechitas Una ayudilla, dato, consejo? Título: Re: [C++] Especie de Fuerza Bruta Publicado por: Beakman en 13 Noviembre 2010, 04:12 am Citar Se carga la primer convinacion en la matriz mientras el primer elemento de la fila sea distinto a 0, va a ir comparando numero a numero, para ver si la combinacion es la misma si es la misma la descarta y crea una nueva, si no es la misma acumula si la cantidad de acumulaciones -1 es igual al indice de fila, significa que eran todas distintas, y guarda esa convinacion es esa fila y asi hasta terminar lo podrías explicar de otra forma? //------------------------------------------------------------------- Hiciste esto: Código: int mat[fact][digitos],vec[digitos]; Para eso esta la memoria dinamica. Título: Re: [C++] Especie de Fuerza Bruta Publicado por: PiroskY en 13 Noviembre 2010, 05:16 am el problema es que no se de memoria dinamica aun, intento hacerlo con mis pequeños conocimientos, se que peudo ahcerlo de una u otra forma, pero no em sale :P
y lo que pedis que vuelva a explicar es asi: Llamo a la funcion que me crea una convinacion, por ser la primera, la cargo en la matriz sin comparar contra ninguna despues la llamo de nuevo, y voy recorriendo las filas de la matriz, viendo, si el primer elemento es algo distinto a un 0 es porque ahi ya hay una convinacion (porque previamente la inicialice toda con ceros) si ya hay una convinacion, va a comparar contra esa, si pasa todas las comparaciones de todas las combinaciones, viendo que la convinacion que tengo actualmente en el vectorsito auxiliar es distinta a todas las guardadas, la guarda en la siguiente fila no se si me explique mejor ahora Título: Re: [C++] Especie de Fuerza Bruta Publicado por: Beakman en 20 Noviembre 2010, 06:03 am si ahora te entendí.
ponele un cout dentro del while y mostrá el nuevo vector que estas queriendo agregar a la matriz, ese vector siempre es el mismo, por eso no sale del ciclo. El vector es el mismo porque te esta fallando lo que hiciste para conseguir un numero aleatorio. intenta poner al principio del programa ( en el main ) Código: srand( time (NULL ) ); Intenta cargar la matriz sin conseguir los números de una forma aleatoria. va a ser mejor. la memoria dinámica no es muy complicada. En vez de hacer esto: Código: int mat[fact][digitos],vec[digitos]; tenes que hacer esto: Código: int **mat; //puntero a puntero y al final del programa tenes que liberar la memoria asi: Código: delete[] mat; cualquier cosa pregunta. suerte ( perdon por no contestarte antes , no pude ) |