Forum: Programmieren allgemein
by cltom,
14. Okt 2011
Ja, das ist ein relativ altes Fortran-Projekt, das ich portieren werde.
Ich würde gerne diese gotos vermeiden, vor allem weil ich sie (augenscheinlich) nicht verstehe bzw. Fehler damit befürchte.
Danke aber für Deinen Vorschlag, das wär natürlich deutlich kompakter. Hier bin ich aber noch am Abwägen, was besser ist: die Struktur des alten Programms weitgehend belassen, sodass der...
Forum: Programmieren allgemein
by cltom,
14. Okt 2011
hätte es jetzt mal so versucht:
while cont do
begin
for j := k downto 1 do
begin
if r=0 then
begin
*snip*
k:=k-1;
Forum: Programmieren allgemein
by cltom,
14. Okt 2011
klar, hier mal der ganze teil, ist ja nicht so viel:
10 DO 50 J=K,1,-1
R = ZERO
DO 20 I=1,K
20 IF (I .NE. J) R = R+ABS(MAT(J,I))
IF (R .EQ. ZERO) THEN
SCAL(K) = J
IF (J .NE. K) THEN
Forum: Programmieren allgemein
by cltom,
14. Okt 2011
Hmm, das macht Sinn. Vielen Dank!
Um das zu übersetzen ohne goto muss man da wohl eine neue Schleife drum herum packen, oder?
Forum: Programmieren allgemein
by cltom,
14. Okt 2011
der Code ist alt, aus 1993, Fortran77
Sorry! Die Schleifenvariable ist nicht doppelt, das war mein Fehler. Die Wird nur zwei mal hintereinander genutzt ... das ist ein kreuz mit diesen Zeilennummern, wenn man da nicht aufpasst ...
Die Frage mit dem Goto bleibt aber, danke!
Forum: Programmieren allgemein
by cltom,
14. Okt 2011
ah, ok, das hast wohl recht. und ich fürchte, dass es auch Sinn macht, weil in dem ausgeschnippelten Teil die Variablen für die Schleife verändert werden (k wird verringert).
Edit: nein, eigentlich macht es keinen Sinn:
10 DO 50 J=K,1,-1
IF (A .EQ. 0) THEN
*snip*
ENDIF
K = K-1
Forum: Programmieren allgemein
by cltom,
14. Okt 2011
Hej,
habe folgendes Fortran Schnipsel:
10 DO 50 J=K,1,-1
IF (R .EQ. 0) THEN
*snip*
GOTO 10