problem mit random befüllten array
-
SirLant schrieb:
Wie wäre es, wenn du das an den Anfang deines Programmes schreibst?
wenn ichs im prog ganz oben schreibe kommen folgende fehler:
error C2501: 'srand' : Fehlende Speicherklasse oder Typbezeichner
error C2373: 'srand' : Neudefinition; unterschiedliche Modifiziererund wenn ichs in die main schreibe kommt dann fehler in der anwendung und es passiert nix, kann das denn keiner mal bei sich ausprobieren bevor er nen vorschlag postet
rendner
-
das in der main war ein fehler meinerseits;)
in der main bringt das gar nix
-
rendner schrieb:
das in der main war ein fehler meinerseits;)
in der main bringt das gar nixGlaub ich dir nicht
Versuch mal das
int main(){ srand (time (NULL)); for(int i=99; i>=0; i--) { cout<<_arrProzesse[i].getProName()<<setw(5)<<_arrProzesse[i].getProSize() <<endl; } return 0; }
-
SirLant schrieb:
Versuch mal das
int main(){ srand (time (NULL)); for(int i=99; i>=0; i--) { cout<<_arrProzesse[i].getProName()<<setw(5)<<_arrProzesse[i].getProSize() <<endl; } return 0; }
...klappt doch nich!!!!!!!!!!
hab ich auch ausprobiert!!!
sonnst kopier mal den script von mir include mal noch time.h und probiers mal selber, unter die for-schleife in der main generiert ja nich die prozesse sondern gibt die aus, und wenn du die konsole dann schliest und erneut "emulierst" sind das genau die gleichen wie vorher....rendner
-
rendner schrieb:
SirLant schrieb:
Versuch mal das
int main(){ srand (time (NULL)); for(int i=99; i>=0; i--) { cout<<_arrProzesse[i].getProName()<<setw(5)<<_arrProzesse[i].getProSize() <<endl; } return 0; }
...klappt doch nich!!!!!!!!!!
hab ich auch ausprobiert!!!
sonnst kopier mal den script von mir include mal noch time.h und probiers mal selber, unter die for-schleife in der main generiert ja nich die prozesse sondern gibt die aus, und wenn du die konsole dann schliest und erneut "emulierst" sind das genau die gleichen wie vorher....rendner
Achso du hast da nen globales Array, dann kann es natürlich nicht gehen, schreib in deinen Konstruktor folgendes:
static bool firstTime = true;
if (firstTime)
{
srand (time (NULL));
firstTime = false;
}
-
boah...geil!
mensch das is ja fein, funtzt!!!!
aber wenn ichs ausführe habe ich manchmal so ne zeile wo ne zahl steht obwohl da ein name und denn die prozessSize stehen müsste, bekommt man das noch weg und nun musste mir auch noch erklären was deine zeilen da bewirken steig da nicht ganz durch.aber vielen dank, hab schon gedacht das wird nie was
rendner
-
Denkbar wäre auch sowas:
int seed_rng() { srand(time(NULL)); return 0; } //... Prozess::Prozess() { static int dummy_to_seed_rng = seed_rng(); //... }
-
0xdeadbeef schrieb:
Denkbar wäre auch sowas:
int seed_rng() { srand(time(NULL)); return 0; } //... Prozess::Prozess() { static int dummy_to_seed_rng = seed_rng(); //... }
das is ja das gleiche, aber ich denke ein bischen verschwenderisch, hab ja dann in jeden Prozess(insgesamt 100)ne variable die ich gar nicht brauch, aber trotzdem DANKE.
aber ist das nicht so das man ne static-vari nur einmal nen wert zu weisen kann und dann nicht mehr,static bool firstTime = true; if (firstTime) { srand (time (NULL)); firstTime = false; //<------------somit geht das doch auch nicht }
was das problem mit den zahlen zwischen den Prozessen(bei ausgabe des _arrPozesse, in der main)angeht weis ich immer noch nicht wie das zu stande kommt(es wird ja ein name per zufall daraus gewählt mit folgendem zugriff: rand()%30-1) und somit greift er ja auf die elemente 0-29, ich checks einfach nicht.
kann mir da noch mal einer helfen, ansonsten schon mal danke an alle für ihre hilfe, besonderst an SirLant und 0xdeadbeefrendner
-
gut das mit dem static hat sich erledigt das was ich meinte war dann const, naja werds auch irgendwann lernen....;)
-
so jetzt funtzt alles, war ein flüchtichketsfehler meinerseits...
have a nice day, rendner
-
Der Bezeichner static bedeutet, dass die Variable in einem statischen Speicherbereich liegt. Dementsprechend wird sie nur einmal initialisiert und srand(time(NULL)) wird nur einmal ausgeführt - und das auf jeden Fall bevor du das erste mal rand() benutzt. Der Vorteil gegenüber der bool-Konstruktion ist, dass du auf 100 unnötige bool-Vergleiche verzichten kannst, maw es ist schneller.