Seite 1 von 1

[gelöst] for Schleife lässt Programm nach Durlauf abstürzen?

Verfasst: 28. August 2007 21:21
von hbc
Hallo,

ich habe zur Berechnung einiger Punkte die auf dem Drucker ausgegeben werden sollen folgende Schleife erstellt:

Code: Alles auswählen

for (int i = 0; i <= (2*Stabanzahl); i++)
	{
		xs = x2 - (Umrechnung(laengeStab[i],d.device()))/M;		
		ys= ys - (Umrechnung(Abstand,d.device()))/M;
		d.drawLine(x2,ys,xs,ys);
		i++;
		xs = x2 - (Umrechnung(laengeStab[i],d.device()))/M;		
		ys = ys - (Umrechnung(Stabstaerke,d.device()))/M;		
		d.drawLine(x2,ys,xs,ys);
		
	}
das Programm durläuft die Schleife bis zum Schluß, doch am Ende, also wen die Bedingung nicht mehr erfüllt ist, stüzt das Programm einfach ab.
Ich habe schon ewig nach dem Fehler gesucht mir fällt nichts mehr ein, kann mir jemand da weiter helfen?

Gruß
Frank

Verfasst: 28. August 2007 22:18
von upsala
Auch schon mal mit dem Debugger durchlaufen lassen?

Verfasst: 28. August 2007 22:26
von hbc
ja auch schon debuggt, ich bekomme als Antwort "Normal beendet",
ist schon sehr komisch :(

Gruß
Frank

Verfasst: 29. August 2007 08:01
von Christian81
Zu wenig Code, aber das sieht mir falsch aus:

Code: Alles auswählen

for (int i = 0; i <= (2*Stabanzahl); i++) 
und sowas ist noch verwirrender:

Code: Alles auswählen

      i++; 

Verfasst: 29. August 2007 09:03
von upsala
Oder was Christian81 eigentlich sagen will: Kannst du sicherstellen, daß laengeStab immer eine gerade Anzahl hat.

Verfasst: 29. August 2007 09:58
von hbc
ich habe den Fehler gefunden (Asche auf mein Haupt) die korreckte Einleitung für die for Schleife muss heissen

Code: Alles auswählen

	for (int i = 0; i < (2*Stabanzahl); i++)
durch das hochzälen in der Schleife wurde der Zähler ein mal zu viel hochgezählt und ist hinter das Ende der Liste (laengeStab ) gelangt und abgestüzt, was nicht immer passierte, aber genau das hätte mich eigentlich gleich auf den Fehler bringen müssen :oops:

vielen Dank an alle

Frank