Messwerte abspeichern und gleich sortieren

Hallo zusammen,

leider habe ich bis jetzt nirgendwo eine Antwort für mein Problem gefunden, deswegen möchte ich euch hier um die Hilfe bitten.

Ich baue gerade eine Stoppuhr. Diese soll 10 Zeiten messen und sie sortiert (fürs erste) im seriellen Monitor als Ergebnis anzeigen.

Ich würde es mir so vorstellen, dass jeder Teilnehmer eine Startnummer bekommt. Also S1, S2, S2,..usw.

Als Ergebnis hätte ich gerne folgendes:

Platz Starter Ergebnis Differenz

1 S2 01:01:158 00:00:000
2 S1 01:01:289 +00:00:131
3 S4 01:02:159 +00:01:001
4 S3 01:03:598 +00:02:440
5 S5 00:00:000
6 S6 00:00:000
7 S7 00:00:000
8 S8 00:00:000
9 S9 00:00:000
10 S10 00:00:000

Also der schnellste ist natürlich ganz oben und dann wäre es nett, wenn die Differenzen zu dem schnellsten auch angezeigt werden.

Wäre das möglich und wenn ja, wie soll ich damit anfangen?

Die ganz normale Stoppuhr läuft. Ich weiß gerade nur nicht, wie ich das Ergebnis speichern soll.

Ich habe die Stoppuhr mit millis() realisiert.

Vielen Dank
Grüße
HDS666

Da könnten Arrays bzw. Arrays aus Strukturen zum Abspeichern brauchbar sein und dann ein Sortieralgorithmus (z.B. Bubblesort).

Gruß Tommy

$ man qsort

Bubblesort kann man zwar für sehr kleine Sets verwenden, aber ansonsten ist das eher von theoretischem Interesse. Praktisch sind die Standard-Algorithmen Insertionsort für kleine Sets und Quicksort für große. Mit Insertionsort kann man auch schon direkt bei Abspeichern sortieren und muss nicht warten bis alle Daten komplett da sind. Das geht mit Bubblesort nicht

Ok, vielen Dank. Ich werde es mir mal durchlesen..

Eine Sache verstehe ich noch überhaupt nicht. Ich kann ja alle werte speichern und sortieren. Dann wären alle Zeiten mit den Differenzen zum Zweitpunkt als der Teilnehmer ins Ziel kam gespeichert.

Wie mache ich es aber, dass die Differenzen von den älteren Zeiten nachträglich angepasst werden, wenn eine neue Bestzeit kommt und sich dadurch die Differenzen ändern?

Grüße
HDS666

Gar nicht erst die Differenzzeiten speichern.

Hallo,

na ja , wenn z.B 3 Zeiten gestoppt sind sollen die in der Reihenfolge angezeit werden. Kommt jetzt eine neue Stopzeit dazu muss natürlich nochmal sortiert werden und die Differenzen neu berechnet werden.

alle Timer laufen lassen-> kommt ein Stop Ereigniss-> sortieren und rechnen für die Anzeigereihenfolge

Heinz

Ich habe die Stoppuhr mit millis() realisiert.

Jeder Starter hat seine eigene Startzeit (sonst wäre das Sortieren ja komplett Unsinn)
Und die Startnummer/Name liegt schon fest, bevor er/sie überhaupt gestartet ist.

Pass auf, dass du nicht die Startnummer (Namen) beim Sortieren verlierst :roll_eyes:
Oder dass jemand ins Ziel kommt, ohne gestartet zu sein :stuck_out_tongue:

Ich würde gar nicht sortieren, sondern eine Zeigerkette aufbauen und neue Ergebnisse passend einketten.
Die Differenzzeiten kann man immer noch bei der Ausgabe ausrechnen.