Messwerte sortieren

OP #1053485
Hallo,

irgendwie stehe ich gerade voll auf dem Schlauch.
Ich habe 3 Messwerte, channelx, channely und channelz (Wertebereich: 
-4000 bis +4000). Diese Werte würde ich gerne der Größe nach sortieren.
Das ganze soll nach Möglichkeit ohne implementierung komplexer 
Sortieralgorithmen gehen, sind ja nur die drei Werte.
Mein eigentliches Problem ist folgendes:

Wenn ich drei Messwerte sortiere, dann anhand ihrer Werte. Als Ergebnis 
bekomme ich die Werte in geordneter Reihenfolge, aber woher habe ich 
denn die Zuordnung zwischen Wert und Variablennamen. Schwer Auszudrücken 
irgendwie, ein Beispiel:
x = 1, y = 7, z = 3
Diese Werte schreibe ich z.B. in ein Array. Dann vergleiche ich und 
sortier die um, krieg ich wohl noch hin, aber wenn ich am ende eine 
Liste von 1, 3, 7 erhalte, wie weiss ich dann welcher Wert zu welcher 
Variable gehört?

Ich hoffe jemand entfernt mal das Brett von meinem Kopf.
Gast
du machst aus deiner n x 3 Matrix eine 3n x 2 Matrix. In der ersten 
Spalte stehen nur die Symbole 'x','y','z' in der zweiten deine 
Messwerte. Dass du insgesamt mehr Sepicher brauchst, nimmst du in kauf.
Mach ein struct mit Wert und Variablennamen.
Dann Sortierst du nach den Werten im Struct und der variablenname bleibt 
erhalten...
1
typedef struct{
2
  char name;
3
  uint16 value;
4
} Koordinate;
5

6
...
7

8
... fnc (...){
9
// Variable anlegen
10
Koordinate channelx, channely, channelz;
11

12
// Werte zuweisen
13
channelx.name = x;
14
channelx.value = get_Value();
15
...
16

17
//Sortieren wie auch immer
18
if(channelx.name < wasauchimmer)
19
  ersterwert = & channelx;
20

21
// Frage nach dem namen
22
werwarerster = ersterwert->name;
23
}
Persönliche Seite
Du machst IMHO einen Denkfehler, wenn du die Werte verschiedener 
Messkanäle untereinander ("iese Werte schreibe ich z.B. in ein Array") 
sortierst. Ich würde mehrere Arrays benutzen und nur die Werte eines 
Messkanals sortieren und dann die anderen Werte "mitziehen"

Unsortiert:

Index Messung    channelx channely channelz
0        1           1        7        3
1        2           0        5        8
2        3           3        10       2

Sortiert z.B. nach channelx:

Index Messung    channelx channely channelz
0        2           0        5        8
1        1           1        7        3
2        3           3        10       2
OP
Hui, danke für die schnellen Antworten schonmal.

Erstmal zu Stefan: Das Problem ist, dass ich erstmal nur eine Messung 
habe. Die Daten werden sortiert, verarbeitet, regeln etwas und 
anschliessend gibts dann viel später eine neue Messung.

Zu Bertram: Die Idee mit dem struct gefällt mir sehr gut, zumal die 
ganze SAche nach hinten raus auch noch komplizierter wird. Abhängig vom 
Vorzeichen des Wertes werden u.a auch noch unterschiedliche Kanäle 
angesteuert usw. Alles Informationen die sich in einer solchen Struktur 
gut mit einbauen lassen.

Ich hab die mIttagspause nun erstmal zu denken, mahlzeit. ;)

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.