![]() |
Integer Variablen sortieren
Hallo liebes Forum,
ich habe eine Frage die zunächst trivial klingt: Ich möchte 16 Integer- Variablen der Größe nach sortieren. L1 bis L16 erhalten zufällig die Zahlen von 1 bis 16. Jetzt benötige ich L1 bis L16 in der korrekten Reihenfolge der Größe nach. Mit den gemeinhin bekannten Algorithmen werden nur die Zahlen sortiert (z.B. Elemente des Integer Arrays), so dass ich ein aufgeräumtes Integer Array bekomme, mir geht es jedoch um Variablen. Gibt es hier nicht eine bequeme Möglichkeit ohne sich übermäßig anzustrengen? Vielen Dank für Antworten. |
AW: Integer Variablen sortieren
aus den vielen Variablen EINE Array-Variable machen
oder Variablen in ein Array/Liste kopieren, dort sortieren und dann das Ergebnis zurück in die Variablen schreiben. |
AW: Integer Variablen sortieren
Variablen haben eigentlich keine Reihenfolge. Außer man nimmt die physische Anordnung im Speicher als Reihenfolge. Und insofern kann man diese Reihenfolge auch nicht ändern.
Mir erschließt sich die Aufgabenstellung nicht so recht. |
AW: Integer Variablen sortieren
Was ist das konkrete Ziel der Aufgabe?
Vielleicht verstehe ich es falsch, aber es liest sich so, als wolle man eine xAnzahl Variabeln wie folgt sortieren wollen: x1 = 12; x2 = 3; x3 = 17; x4 = 23; x5 = 1; ... zu: x5, x2, x1, x3, x4, ... Die "Variabeln sortieren" klingt halt irgendwie... komisch. Vorallem wofür ist das konkret gut? |
AW: Integer Variablen sortieren
Mach ein array of record name+wert + sortiere die records im array nach dem wert. Dann kannst du die Variablennamen in der sortierten Reihenfolge ausgeben.
Aber da vermischen sich Bedeutungen: Variable ist nicht das gleiche wie Variablennamen ist nicht das gleiche wie Variableninhalt. |
AW: Integer Variablen sortieren
Ich vermute er benötigt nur die Sortierung nur für die Darstellung in der GUI.
Ansonsten macht das Sortieren von unabhängigen Variablen für mich keinen Sinn, wenn die Werte zu den Variablen nicht verändern sollen. |
AW: Integer Variablen sortieren
Um Variablen-Namen sortiert nach deren Inhalt und mit dem Inhalt als Liste auszugeben, muss man so eine Liste erst einmal erzeugen.
Delphi-Quellcode:
uses
System.Classes, Generics.Collections, Generics.Defaults; type TMyValue = Integer; PMyValue = ^TMyValue; TMyVariable = class(TObject) private P: PMyValue; function GetValue: TMyValue; procedure SetValue(const AValue: TMyValue); public Name: string; constructor Create(const AName: string; var AValue: TMyValue); property Value: TMyValue read GetValue write SetValue; end; TMyVariableComparer = class(TComparer<TMyVariable>) function Compare(const Left, Right: TMyVariable): Integer; override; end; TMyVariableList = TObjectList<TMyVariable>; procedure InitMyVariableList; procedure RandomizeMyVariableList; procedure SortMyVariableList; procedure WriteMyVariableList; var L1, L2, L3, L4: TMyValue; implementation var MyVariableList: TMyVariableList; procedure InitMyVariableList; begin FreeAndNil(MyVariableList); MyVariableList := TMyVariableList.Create; MyVariableList.Add(TMyVariable.Create('L1', L1)); MyVariableList.Add(TMyVariable.Create('L2', L2)); MyVariableList.Add(TMyVariable.Create('L3', L3)); MyVariableList.Add(TMyVariable.Create('L4', L4)); end; procedure RandomizeMyVariableList; begin Randomize; for var lItem in MyVariableList do lItem.Value := Random(MaxInt); end; procedure SortMyVariableList; begin MyVariableList.Sort(TMyVariableComparer.Create); end; procedure WriteMyVariableList; begin { TODO : } end; { TMyVariable } constructor TMyVariable.Create(const AName: string; var AValue: TMyValue); begin Name := AName; P := @AValue; end; function TMyVariable.GetValue: TMyValue; begin Result := P^; end; procedure TMyVariable.SetValue(const AValue: TMyValue); begin P^ := AValue; end; { TMyVariableComparer } function TMyVariableComparer.Compare(const Left, Right: TMyVariable): Integer; begin Result := Left.Value - Right.Value; end; finalization MyVariableList.Free; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz