Hallo ToM,
Das ist kein Problem, sondern ein Fehler im Syntax. (Handbuch Seite 85 Bsp. rechts oben mit step -1)
Und zwar muß ein bei negeativem step immer ein Operator dabeistehen:
for Schleife = Anzahl >= 0 step -1
So kann man das viell. besser erkennen wie das for funzt:
Schleife = 0 while Schleife <= Anzahl { // Anweisungen // ... Schleife =Schleife +1 } Das wäre ein for umschrieben mit while. (for schleife=0 ... Anzahl)
Bei der Forschleife mit step -1, wie Du es geschrieben hast, würde das so aussehen: Schleife = Anzahl while Schleife <= 0 { // Anweisungen // ... Schleife =Schleife - 1 }
Hier kann man gut erkennen, was passiert. :-)
Bei der korekten Schreibweise mit step -1 sieht das so aus: (for Schleife=Anzahl ... >= 0 step -1)
Schleife = Anzahl while Schleife >= 0 { // Anweisungen // ... Schleife =Schleife - 1 }
Ich hoffe das hilft Dir um zu verstehen, wie "for" funzt.
MfG André H.
> Hallo zusammen, > habe bei folgendem Programm festgestellt, das die Variable > Schleife nach dem Aufruf der Funktion immer den Wert 160 > (warum auch immer) hat. In der Zeile > > for Schleife = ... > > wird zwar die Variable Schleife auf den Wert von AnzahlWerte > gesetzt (in diesem Fall 10), dann aber die for Schleife sofort verlassen. > > Auch das einfügen von > > Schleife = AnzahlWerte; > > unmittelbar vor der for-Anweisung hat nichts gebracht. > > Abhilfe hat erst das umstellen der for-Schleife in > > for Schleife = 0 ... AnzahlWerte > { > } > > gebracht.In diesem Fall war das auch kein Problem. > So nun meine Frage: Hat dieses Probleme mit step-1 > auch schon ein anderer beobachtet, und hat jemand > eine Idee warum das so ist, denn manchmal wäre eine > rückwärts laufende Schleife doch eleganter als sie > dann intern umzudrehen. > > mfg ToM > > --------------------------------------------------------------------------------------------------------------------------------------------------------------- > > > function aussentempmitteln ( int HKNr, int AnzahlWerte ) > { > int Schleife; > int Summe; > > for Schleife = AnzahlWerte ... 0 step -1 > { > /* diese Anweisungen wurden nie bearbeitet */ > HK[HKNr].AussenTempArray[Schleife] = HK[HKNr].AussenTempArray[Schleife-1]; > } > } > > --------------------------------------------------------------------------------------------------------------------------------------------------------------- > > > > function aussentempmitteln ( int HKNr, int AnzahlWerte ) > { > int Schleife; > int Summe; > > for Schleife = 0... AnzahlWerte-1 > { > /* und so hats prima funktioniert */ > HK[HKNr].AussenTempArray[AnzahlWerte-Schleife] = HK[HKNr].AussenTempArray[AnzahlWerte-Schleife-1]; > } > }
|