Título: Duda sobre crash Publicado por: Shout en 7 Octubre 2012, 16:20 pm Hola,
estaba haciendo un simple programa en C++ porque me aburría y, al probarlo, el programa llegaba a cierto punto y se cerraba. Lo que intento es llenar un array con números [-2000, 2000], guardar los números usados en un bitset (bs[1024] sería 1 si he metido 1024 en el array y 0 si no lo he hecho) y luego, con un for, empezar en -2000 y llegar a 2000 mostrando todos los números que no he usado en el array anterior, y para evitar recorrer el array cada iteración, usé un bitset que consume menos memoria y es más rápido. El código es este: Código
Gracias y saludos Título: Re: Duda sobre crash Publicado por: rir3760 en 7 Octubre 2012, 17:24 pm El problema que mencionas se debe a la sentencia condicional:
Código Al evaluarse el operando izquierdo de "||": Código Si "i" es mayor o igual a cero y "!used1[ i ]" es cero la condición es falsa y se evalúa la expresión a su derecha: Código Y de nuevo: si el valor de "i" es mayor que cero la expresión "i * (-1)" resulta en un indice negativo. Por cierto no hay necesidad de multiplicar por menos uno, puedes utilizar el operador unario "-". Para que el programa funcione correctamente hay que cambiar el condicional a: Código
También debes declarar el bitset "used2" con una capacidad de 2001 elementos (ello porque su elemento con indice cero no es utilizado). Un saludo Título: Re: Duda sobre crash Publicado por: Shout en 10 Octubre 2012, 21:38 pm Muchas gracias, ya lo he solucionado, sabía que los índices negativos no existen, pero mira lo que hacen las prisas ;-) se puede cerrar
|