case anwendung

schrom

Grünschnabel
hallo!
ich brauche dringend hilfe. und zwar soll ich ein magisches quadrat mit beliebiger dimension erzeugen. dazu habe ich eine case anwendung erstellt.allerdings tritt einer der fälle ein und ich weiß nicht wieso. dem array wird einfahc kein wert zugeordnet.
Code:
for(l=2;l<=(dimension*dimension);l=l+1){
	n=0;
	i=i+1;
	j=j-1;
	
	if(j==-1){
		o=1;
	}
	if(i>(dimension-1)){
		o=2;
	}

	if(i==0&&j==(dimension-1)){
		o=3;
	}

	if(quadrat[j][i]=!0){
		o=4;}
	if(quadrat[j][i]==0){
        o=5;   
    }

	
		
	switch(o){
		case 0: quadrat[j][i]=l;
                 break;
		case 1: quadrat[dimension-1][i]=l;
				  j=dimension-1;
                  break;
		
		case 2: quadrat[j][0]=l;
			   	  i=0;
                     break;
		
		case 3: quadrat[1][dimension-1]=l;
                 break;
		
		case 4: quadrat[j-2][i-1]=l;
                 break;
    	case 5: quadrat[j][i]=l;
    	         break;
}}
 
Hallo schrom,

ich habe den Algorithmus jetzt nicht nachvollzogen (ist auch schwierig ohne Kommentare und vernünftiger Einrückung), aber kann es sein, dass da irgendwo ein o = 0; fehlt (z.B. vor den if-Abfragen)? Ansonsten würde ich einfach mal mit einem Debugger die Programmausführung Zeile für Zeile durchgehen. So sollte sich der Fehler wohl am leichtesten finden lassen.

Grüße, Matthias

PS: Bitte halte dich doch bezüglich Groß-/Kleinschreibung an die lNetiquette (Punkt 15).
 
Moin,

ich muss Matthias beipflichten, zudem frage ich mich ob und wie 'i' und 'j' initialisiert sind ....

Ggf. laufen die Anweisungen
Code:
i=i+1;
j=j-1;
ins Leere ...

Es ist übrigens vlt. pfiffiger, die Werte statt dessen mit
Code:
i++;
j--;

zu in- und dekrementieren (so Du denn C++ nutzt)!

Gruß
Klaus
 
Moin McCoder,

ja, so war es eigentlich gemeint, da ich mir nicht mehr ganz sicher war ... ist schon solange her ;)

Gruß
Klaus
 
Zurück