![]() |
Die höchsten Array-Werte anzeigen
Hallo!
Ich habe ein Array, sagen wir " g[1..200] of Integer; " Den Variablen des Arrays sind jeweils unterschiedliche Zahlen zugeordnet. Nun möchte ich in einem weiteren Array " p[1..10] of Integer " die zehn höchsten Zahlen von Array g haben. Das heißt: p[1] , p[2] sollen die zwei höchsten Zahlen sein aus dem Array g. (Also deren Inhalt haben). Ich hoffe ihr versteht mein Problem und könnt mir möglichst schnell helfen! Gruß, dnk05 Edit: sry.So solls also aussehn. Zwei Arrays. g[1..200] of Integer | p[1..10] of Integer g ist gefüllt mit Zahlen, p ist noch leer. Angenommen der Inhalt von g[35] ist der größte Inhalt von g, soll p[1]:=35 sein. Dabei ist der genaue Wert von g egal. Jetzt klarer? Sorry für eben, da wusst ichs selber noch net so genau Danke. |
Re: Die höchsten Array-Werte anzeigen
Stichwort: Sortieren. Sortiere das Array g absteigend, sodass das größte Element an vorderster Stelle steht. Dann kopierst du einfach die ersten 10 Elemente in g.
Zum Sortieren gibts hier massig Hilfe. Stichwort: Suchen. |
Re: Die höchsten Array-Werte anzeigen
Edit: Siehe oben!
|
Re: Die höchsten Array-Werte anzeigen
Delphi-Quellcode:
so ganz spontan...
for i:=1 to 10 do
begin p[i]:=1; //Init aufs erste for j:=2 to 200 do //wenn das g[p[i]] kleiner als g[j] dann neu setzen if g[p[i]]<g[j] then p[i]:=j; g[p[i]]:=0; //aus wertung raus end; wenn g unberührt bleiben soll musstes vorher nochmal kopieren... |
Re: Die höchsten Array-Werte anzeigen
Gab es in D3 schon dynamische Arrays?
Delphi-Quellcode:
Grüße vom marabu
function GetTopTenByIndex(values: array of integer): TIntegerDynArray;
var i: integer; list: TList; function ListSortCompare(index1, index2: integer): integer; begin // die Werte vergleichen, aber die Index-Werte sortieren if values[index1] < values[index2] then Result := -1 else if values[index1] > values[index2] then Result := 1 else Result := 0; end; begin // weil TList einen QuickSort mit bringt... list := TList.Create; // Alle Indexwerte in die Liste for i := Low(values) to High(values) do list.Add(Pointer(i)); // Sortieren list.Sort(@ListSortCompare); // Platz für Result-Vektor anfordern SetLength(Result, 10); // die Index-Werte der top ten übertragen for i := Low(Result) to High(Result) do Result[i] := Integer(list[High(values) - High(Result) + i]); // die Liste hat ihre Schuldigkeit getan - die Liste kann gehen... list.Free; end; |
Re: Die höchsten Array-Werte anzeigen
Zitat:
|
Re: Die höchsten Array-Werte anzeigen
Hallo,
wie wäre es denn damit:
Delphi-Quellcode:
private
{ Private-Deklarationen } Far200 : Array[0..199] of Integer; Far10 : Array[0..9] of Integer; ... procedure TForm1.Button2Click(Sender: TObject); var iCnt : Integer; jCnt : Integer; kCnt : Integer; begin Far10[0]:=Far200[0]; For jCnt:=Low(Far200)+1 to High(Far200) do begin For iCnt:=Low(Far10) To High(Far10)do If Far10[iCnt]<Far200[jCnt] then begin For kCnt:=High(Far10) DownTo iCnt+1 do Far10[kCnt]:=Far10[kCnt-1]; Far10[iCnt]:=Far200[jCnt]; Break; end; end; ShowMessage('Fertig'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:44 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