Seite 1 von 1

[gelöst] größte bzw kleinste Zahl in einem Variablen-Array

Verfasst: Mo, 10.07.2006 18:23
von stefanak
Ich habe ein Problem mit der Feststellung der größten bzw. kleinsten Zahl in einem Variablen-Array.
Hier habe ich meine jetzigen Bemühungen aufgeführt.

Code: Alles auswählen

FOR x=1 TO 3
FOR o=0 TO iCount(x)
IF sAbmessungen(x,o) <> "" AND sAbmessungen(x,o+1) <> "" THEN
	IF x=1 THEN
		IF sAbmessungen(x,o) < sAbmessungen(x,o+1) THEN
		  sStrDurchmesser(x) = sAbmessungen(x,o+1)
		ENDIF
	ENDIF
	IF x=2 AND sAbmessungen(x,o) > sAbmessungen(x,o+1) THEN
	  sStrDurchmesser(x) = sAbmessungen(x,o+1)
	ENDIF
	IF x=3 AND sAbmessungen(x,o) < sAbmessungen(x,o+1) THEN
	  sStrDurchmesser(x) = sAbmessungen(x,o+1)
	ENDIF
ENDIF
NEXT
NEXT

Dies ist der Code.
Ich habe also ein zweifaches Variablen-Array.

Innerhalb der Gruppen ( also (1, xxx), (2, xxx) ) sind Zahlen unsortiert.
Die obige Schleife soll nun die größte Zahl (Gruppe 1 und 3) und die kleinste Zahl (Gruppe 2) in eine Variable schreiben.

Leider mache ich irgend etwas falsch.
Hat jemand eine Idee, wo der Fehler liegt?

mfg
Stefan

Verfasst: Di, 11.07.2006 08:42
von stefanak
wirklich Schade, nicht eine Antwort
Ist die Fragestellung nicht verständlich?

Verfasst: Mi, 12.07.2006 14:33
von Eckhardt
Der Vergleich muss mit sStrDurchmesser(x) durchgeführt werden und nicht mit den jeweils benachbarten Elementen. Damit es funktioniert, muss sStrDurchmesser(x) vor dem eigentlichen Vergleich der Wert von xAbmessungen(x, 0) zugewiesen werden. Die Schleife beginnt dann bei Index 1:

Code: Alles auswählen

FOR x=1 TO 3
   sStrDurchmesser(x) = sAbmessungen(x,0) 
   FOR o=1 TO iCount(x) 
      IF sAbmessungen(x,o) <> "" THEN 
         IF x=1 THEN 
            IF sStrDurchmesser < sAbmessungen(x,o) THEN 
                sStrDurchmesser(x) = sAbmessungen(x,o) 
            ENDIF 
         ENDIF 
         IF x=2 AND sStrDurchmesser(x) > sAbmessungen(x,o) THEN 
            sStrDurchmesser(x) = sAbmessungen(x,o) 
         ENDIF 
         IF x=3 AND sStrDurchmesser(x) < sAbmessungen(x,o) THEN 
            sStrDurchmesser(x) = sAbmessungen(x,o) 
         ENDIF 
      ENDIF 
   NEXT 
NEXT
Der Code ist ohne Gewähr, da ich ihn nicht getestet habe; es müsste aber eigentlich klappen.

Verfasst: Mi, 12.07.2006 17:32
von stefanak
Hallo, und vielen Dank für Deine Hilfe.
Ich habe in der letzten Nacht auch gerechnet und ausprobiert.

Hier mein Ergebnis:
cAussenD = 1
cInnenD =2
cDHoehe =3
iCount(x) = variabel

Code: Alles auswählen

DIM sStrDurchmesser(3) as String
FOR x=1 TO 3
FOR o=0 TO iCount(x)
IF x=cAussenD or x=cDHoehe THEN
	IF val(sAbmessungen(x,o)) > val(sAbmessungen(x,o+1)) THEN
	IF val(sStrDurchmesser(x)) < val(sAbmessungen(x,o)) THEN sStrDurchmesser(x) = sAbmessungen(x,o)
	ENDIF
ENDIF
IF x=cInnenD THEN
	IF o=0 THEN
	IF val(sAbmessungen(x,o)) > val(sStrDurchmesser(x)) THEN sStrDurchmesser(x) = sAbmessungen(x,o)
	ENDIF
	IF val(sStrDurchmesser(x)) > val(sAbmessungen(x,o)) THEN sStrDurchmesser(x) = sAbmessungen(x,o)
ENDIF	
NEXT
NEXT
So funktioniert das super.
Aber trotzdem Danke.

mfg
Stefan