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

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

stefanak
**
Beiträge: 27
Registriert: Mi, 10.05.2006 17:15

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

Beitrag 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
Zuletzt geändert von stefanak am Mi, 12.07.2006 17:48, insgesamt 1-mal geändert.
stefanak
**
Beiträge: 27
Registriert: Mi, 10.05.2006 17:15

Beitrag von stefanak »

wirklich Schade, nicht eine Antwort
Ist die Fragestellung nicht verständlich?
Eckhardt
*
Beiträge: 15
Registriert: Do, 09.03.2006 17:26
Wohnort: Minden/Westf.

Beitrag 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.
mit freundlichen Grüßen

Rainer
stefanak
**
Beiträge: 27
Registriert: Mi, 10.05.2006 17:15

Beitrag 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
Antworten