AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Integer Variablen sortieren

Ein Thema von DelphiUser123 · begonnen am 21. Mai 2024 · letzter Beitrag vom 22. Mai 2024
Antwort Antwort
DelphiUser123

Registriert seit: 23. Feb 2013
39 Beiträge
 
#1

Integer Variablen sortieren

  Alt 21. Mai 2024, 15:17
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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.062 Beiträge
 
Delphi 12 Athens
 
#2

AW: Integer Variablen sortieren

  Alt 21. Mai 2024, 15:54
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.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Integer Variablen sortieren

  Alt 22. Mai 2024, 10:34
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.
  Mit Zitat antworten Zitat
Samorion

Registriert seit: 20. Dez 2023
Ort: Sachsen-Anhalt
3 Beiträge
 
Delphi 12 Athens
 
#4

AW: Integer Variablen sortieren

  Alt 22. Mai 2024, 10:38
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?
Christian
  Mit Zitat antworten Zitat
TigerLilly

Registriert seit: 24. Mai 2017
Ort: Wien, Österreich
1.205 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Integer Variablen sortieren

  Alt 22. Mai 2024, 10:45
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.
  Mit Zitat antworten Zitat
Hobbycoder

Registriert seit: 22. Feb 2017
955 Beiträge
 
#6

AW: Integer Variablen sortieren

  Alt 22. Mai 2024, 10:55
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.
Gruß Hobbycoder
Alle sagten: "Das geht nicht.". Dann kam einer, der wusste das nicht, und hat's einfach gemacht.
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#7

AW: Integer Variablen sortieren

  Alt 22. Mai 2024, 13:00
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:16 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz