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
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
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
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,
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
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.
Lesezeichen