Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!
Bin schwer beindruckt IchSelbst.
Sehr schöne Lösungen.
Eugens Lösung ist zwar auch elegant, aber da stört mich doch der Umweg über die Strings.
Naja ich bin ja nichtmal soweit gekommen
A few weeks of developement and testing can save a WHOLE afternoon in the library!
' schrieb:Hi, hier noch ne Variante...Vergleichoperation für das ganze Array und "um den Speichermanager zu entlasten" auch noch ein richtig vorinitialisiertes Ergebnis-Array...
Achim
Die Ersetzen-Funktion wird auch von NI für solche Operationen empfohlen, bei mehreren Tausend Elementen funktioniert das drastisch schneller als wenn dem Array immer neue Elemente angehängt werden.
Deine aufwendige Berechnung der Arraygröße vor der Schleife ist allerdings unnötig. Besser ist, das Schieberegister erst mal auf die maximal mögliche Größe zu initialisieren und nach Ausführung der Operation den Unsinn enthaltenen Rest des Array abzuschneiden.
Da es egal ist, was in dem vorinitialisierten Array drin ist (es wird sowieso alles überschrieben), habe ich zur Initialisierung einfach den Ursprungs-Array benutzt.
Diese Variante dürfte wohl von allen Lösungsmöglichkeiten die schnellste sein.
Developer Suite Core -> LabVIEW 2015 Prof.
2006
EN
71083
Deutschland
Ungültige Werte aus Array entfernen?
Das ist echt eine gute Idee und ich war so frei, sie zu erweitern, so dass wirklich nur die größeren Werte und nur die kleineren Werte in den beiden Arrays übrig bleiben und nicht der Vergleichswert.
Gruß Markus
' schrieb:Und eine ohne Schleife - wenn schon, dann auch so - ist mir auch noch eingefallen.
-------------------------------------------------------------------------- Bitte stellt mir keine Fragen über PM, dafür ist das Forum da - andere haben vielleicht auch Interesse an der Antwort !!
--------------------------------------------------------------------------
' schrieb:Meine Lösung funktioniert auch, sogar ohne For-Schleife !!!
Gruss, Eugen
In Deinem VI steckt noch ein kleines Fehlerchen, aber trotzdem: So etwa könnte es ohne Schleife tatsächlich funktionieren!
Hier ein falsches Ergebnis bei mehreren Funden:
' schrieb:Das ist echt eine gute Idee und ich war so frei, sie zu erweitern, so dass wirklich nur die größeren Werte und nur die kleineren Werte in den beiden Arrays übrig bleiben und nicht der Vergleichswert.
Auch hier wieder ein Feature. Das Hinzufügen dieses einen Wertes ist ja nur deswegen notwendig, weil die Index-Such-Funktion nur auf == überprüft. Wäre nämlich der Grenzwert, auf den geprüft werden soll, nicht vorhanden, würde dieser Algorithmus nicht funktionieren. Eigentlich sollte nun "Alles Größer" besser "Alle Größer Gleich" heißen - dann muss nur noch entweder am Ende von "Alles Kleiner" oder vom Anfang von "Alles Größer Gleich" der Vergleichwert wieder gelöscht werden (mit Array teilen) und dann ist nachher wie vorher die Anzahl der Werte identisch.
Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
14.03.2007, 22:32 (Dieser Beitrag wurde zuletzt bearbeitet: 14.03.2007 22:33 von eg.)
Also meine Lösung würde ich nie für solche Aufgabe verwenden. Es war für mich nur eine Herausforderung die Aufgabe irgendwie ohne Schleifen zu machen, denn jeder weiss, dass die Aufgabe an sich trivial ist.
Ich denke aber, dass es ohne Schleife gar nicht geht. Das VI Suchen und Ersetzen hat bestimmt intern eine Schleife, noch schlimmer, da wird zeichenweise geschoben, was noch mehr Zeit, Speicher und CPU verbraucht.
Wer könnte es denn ohne Schleife lösen?
Der Vorschlag von IchSelbst ist sehr gut, erfüllt aber nicht die Voraussetzung. Man will ja filtern und nicht das Array aufteilen. Aber wirklich interessant.
Eigentlich habe ich vielmehr in Richtung binäre Operatoren tendiert (siehe Bilder). War aber zu kompliziert. Wenn jemand möchte, kann es fortsetzen. Also ich wollte dann aus dem binären Array Zahlenarray erstellen und dann mit dem Eingabearray verUNDen, habe aber nicht gewusst, wie ich die Nulle wegkriege.