Compiler-Problem
-
Hallo,
musste mein Lottoprogramm von MS VS 6 auf MS VS.net 2003 umstellen.
Dabei kommen einige Warnmeldungen, wegen dem fehlenden Funktionsrückgabetyp.
Das macht kein Problem.
Ein Problem gibts mit der Variable "iZiehung"
Der Fehler lautet: "Run Time Check Failure #2 Stack around the var 'iZiehung' was corrupted."
Mit der VS Version 6 kam das nicht.
Wo liegt der Fehler?CZiehung::fnLottoziehung() { int iZiehung[6]={0,0,0,0,0,0}; //Zahlenarray fuer Lottozahlen int iSuperzahl; //Superzahl int idone=0; //Variable fuer Bubblesort int iWechsel; //Variable fuer Bubblesort srand((unsigned)time(NULL)); //Start fuer Zufall for(int i=0;i<6;i++) //Generierung der Lottozahlen { iZiehung[i]=ZIEHUNG_LOW+(rand()%(ZIEHUNG_HIGH-ZIEHUNG_LOW+1)); for(int j=0;j<i;j++) { if(iZiehung[i]==iZiehung[j]) //Fehlerueberpruefung doppelte Zahl { i--; break; } } } srand((unsigned)time(NULL)); //Start fuer Zufall iSuperzahl=SUPERZAHL_LOW+(rand()%(SUPERZAHL_HIGH-SUPERZAHL_LOW+1)); //Generierung der Superzahl. while(!idone) //Bubblesort { idone=1; for(int k=1;k<7;k++) { if(iZiehung[k-1]>iZiehung[k]) { iWechsel=iZiehung[k-1]; iZiehung[k-1]=iZiehung[k]; iZiehung[k]=iWechsel; idone=0; } } } printf("\nDie gezogenen Lottozahlen sind: %i, %i, %i, %i, %i, %i.\n",iZiehung[0],iZiehung[1],iZiehung[2],iZiehung[3], iZiehung [4],iZiehung[5]); printf("\nDie gezogene Superzahl ist die %i.\n",iSuperzahl); CAuswertung *pCAuswertung; pCAuswertung=new CAuswertung; pCAuswertung->fnAuswertung(); delete pCAuswertung; }
-
for(int k=1;k<7;k++){ if(iZiehung[k-1]>iZiehung[k]) { iWechsel=iZiehung[k-1]; iZiehung[k-1]=iZiehung[k]; iZiehung[k]=iWechsel; // hier schreibst du über die arraygrenze
Kurt
-
Und wie soll ich das ändern?
Das Bubblesort brauch ich.
-
fevernova schrieb:
Und wie soll ich das ändern?
Das Bubblesort brauch ich.
for(int k=1;k<6;k++){
Kurt