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


Anmelden zum Antworten