AGB  ·  Datenschutz  ·  Impressum  







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

Die höchsten Array-Werte anzeigen

Offene Frage von "dnk05"
Ein Thema von dnk05 · begonnen am 6. Nov 2005 · letzter Beitrag vom 6. Nov 2005
Antwort Antwort
dnk05

Registriert seit: 27. Feb 2005
Ort: Maxdorf
4 Beiträge
 
Delphi 3 Professional
 
#1

Die höchsten Array-Werte anzeigen

  Alt 6. Nov 2005, 17:46
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.
  Mit Zitat antworten Zitat
alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Die höchsten Array-Werte anzeigen

  Alt 6. Nov 2005, 17:53
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.
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat
dnk05

Registriert seit: 27. Feb 2005
Ort: Maxdorf
4 Beiträge
 
Delphi 3 Professional
 
#3

Re: Die höchsten Array-Werte anzeigen

  Alt 6. Nov 2005, 18:03
Edit: Siehe oben!
  Mit Zitat antworten Zitat
Benutzerbild von glkgereon
glkgereon

Registriert seit: 16. Mär 2004
2.287 Beiträge
 
#4

Re: Die höchsten Array-Werte anzeigen

  Alt 6. Nov 2005, 18:43
Delphi-Quellcode:
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;
so ganz spontan...

wenn g unberührt bleiben soll musstes vorher nochmal kopieren...
»Unlösbare Probleme sind in der Regel schwierig...«
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#5

Re: Die höchsten Array-Werte anzeigen

  Alt 6. Nov 2005, 18:57
Gab es in D3 schon dynamische Arrays?

Delphi-Quellcode:
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;
Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: Die höchsten Array-Werte anzeigen

  Alt 6. Nov 2005, 18:59
Zitat:
Gab es in D3 schon dynamische Arrays?
Nein gab es nicht
Michael
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Die höchsten Array-Werte anzeigen

  Alt 6. Nov 2005, 20:33
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;
I come from outer space to save the human race
  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 14:29 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