"0xC0000005: Access Violation" hoffe ihr könnt mir damit helfen!



  • hallo,

    nutze MS Visual C++ 6.0.
    hab für die uni folgendes geschrieben und bekomme eine "Access Violation".
    kein plan warum?

    void spieler(int r1,int r2,int r3, int *reihe1,int*reihe2,int*reihe3){
    	int reihe[3],welchereihe=1,anzahl,i;
    	printf("Sie sind am Zug!\n");
    	reihe[1]=r1;
    	reihe[2]=r2;
    	reihe[3]=r3;
    	do{
    		printf("Aus welcher Reihe moechten Sie Streichhoelzer entnehmen? "); scanf("%d",&welchereihe);
    		if ((welchereihe==1 && reihe[1]==0)||(welchereihe==2 && reihe[2]==0)||(welchereihe==3 && reihe[3]==0))
    			printf("In dieser Reihe befindet sich kein Streichholz!\n");
    	} while(welchereihe<1 || welchereihe>3);
    	for (i = 1 ;i<=3;i++){
    		if (welchereihe == i){
    			do{
    				printf("Wie viele Streichhoelzer moechten Sie entnehmen? ");scanf("%d",&anzahl);
    			} while(anzahl<1 || anzahl>reihe[i]);
    			reihe[i]-=anzahl;
    		}	
    	}
    	*reihe1=reihe[1];
    	*reihe2=reihe[2];
    	*reihe3=reihe[3];
    	return;				
    }
    

    es geht um das vielleicht bekannte nimm-spiel!
    ich will in den letzten zeilen doch nur den reihen1-3 die zahlen übergeben! der fehler kommt bei einen der letzten 5 zeilen!

    DANKE



  • 1. Benutz in Zukunft bitte die [cpp]-Tags.
    2. Werden arrays in C beginnend mit der 0 angesprochen, nicht mit 1.



  • okidoki schrieb:

    es geht um das vielleicht bekannte nimm-spiel!
    ich will in den letzten zeilen doch nur den reihen1-3 die zahlen übergeben! der fehler kommt bei einen der letzten 5 zeilen!

    DANKE

    Dann verweist entweder reihe1, reihe2 oder reihe3 auf einen nicht gültigen Speicherbereich. Du zeigst hier aber nicht, wie der Speicher reserviert wird.



  • alles klar, hab die variable mit nur 3 feldern 0,1,2 deklariert, brauche aber 0,1,2,3 also reihe[4]!

    im übrigen weiß ich, dass arrays mit 0 anfangen, ich brauch aber das die felder 1-3.

    danke trotzdem!


Anmelden zum Antworten