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
#include <iostream> // std:: #include <stdlib.h> // rand(), srand() #include <time.h> // time() #include <bitset> // bitset<> using namespace std; int main(){ int a[4000], t; bitset<2000> used1; bitset<2000> used2; srand((unsigned) time(NULL)); for(int i=0;i<4000;i++){ t = rand() % 2000; a[i] = (rand() % 2 ? t : -t); if(a[i] >= 0) used1[a[i]] = 1; else used2[a[i] * (-1)] = 1; } cout << "Not used:\n"; for(int i=-2000;i<2000;i++){ if((i >= 0 && !used1[i]) || used2[i * (-1)]) cout << i << " "; } cin.get(); return 0; }
Gracias y saludos