PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : kleinste Wert aus mehreren Variablen



friedrich2002
23.10.2009, 19:14
Hallo,

wir stehen hier vor einem kleinen Problem.

Ich suche eine Funktion für Bascom, die aus 4 Integervariablen den kleinsten Wert auswählt.

Habe es mit ner If Schleife erfolgreich hinbekommen, das zieht aber Rechenzeit wie sau, vielleicht gibts ja was eleganteres? Danke im Voraus

Gruß

Klaus

yaro
23.10.2009, 21:20
wert = var1

wenn(var2< wert) dann {wert = var2}
wenn(var3< wert) dann {wert = var3}
usw.
Schöner würde man es mit einem Array hinbekommen.
Schneller wirds aber kaum gehen.

Gruß, Yaro

PicNick
24.10.2009, 10:28
Du kannst mit Re-definition (Overlay) die Integer als Bytes betrachten.
Du vergleichst erst nur die MSBytes, und nur, wenn die gleich sind, checkst du noch das LSB.
Das bringt aber wahrscheinlich nur dann wirklich was Spürbares, wenn du die Routine im assembler machst.

Variante: Schon bei Erstellen der Variablen auf kleinste Zahl prüfen. da kommts auf restliche Programm an.
Das bringt dann was, wenn es deutlich mehr als 4 Variablen sind,

Besserwessi
24.10.2009, 17:30
Der Vergleich nur mit dem MSB bringt beim AVR nur relativ wenig, denn ein Bedingter Sprung braucht zumindestens in ASM schon länger.

Es gint ja da extra die BASCOM funktion MIN für genau diese Aufgabe, wenn die Daten in einem Array stehen. Wenn die Funktion nicht ganz schlecht programmiert ist, dann wäre nur eine ASM lösung schneller.
Wenn die Daten nicht ohnehin im Array stehen, könnte man das wahrscheinlich per Overlay erreichen.