AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi FreePascal Niedrigsten Werte in Array finden
Thema durchsuchen
Ansicht
Themen-Optionen

Niedrigsten Werte in Array finden

Ein Thema von MastersOfDesasters · begonnen am 4. Mär 2013 · letzter Beitrag vom 4. Mär 2013
 
Blup

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

AW: Niedrigsten Werte in Array finden

  Alt 4. Mär 2013, 13:22
Scheint egal zu sein, wenn es nur darum geht die Gesamtpunktzahl zu maximieren.

1. Nimm von jedem Fach die beiden schlechtesten Semester.
2. Bilde eine Gesamtmenge aus den Ergebnissen von 1.
3. Wähle die vier schlechtesten aus dieser Gesamtmenge.

Delphi-Quellcode:
type
  TSpinArr = array of TSpinEdit;

procedure Tausche(var A, B: TSpinEdit);
var
  T: TSpinEdit;
begin
  T := A;
  A := B;
  B := T;
end;

function ErmittleSchlechteste(const AEditArr: TSpinArr; ACount: Integer): TSpinArr;
var
  i1, i2, n: Integer;
  Item: TSpinEdit;
begin
  SetLength(Result, ACount);
  n := 0;
  for i1 := Low(AEditArr) to High(AEditArr) do
  begin
    Item := AEditArr[i1];
    if n < ACount then
    begin
      Result[n] := Item;
      Inc(n);
    end
    else
    begin
      for i2 := 0 to ACount - 1 do
      begin
        if Item.Value < Result[i2].Value then
          Tausche(Item, Result[i2]);
      end;
    end;
  end;
  SetLength(Result, n);
end;

function Gesamtmenge(const A1, A2: TSpinArr): TSpinArr;
var
  i, n1, n2: Integer;
begin
  n1 := Length(A1);
  n2 := Length(A2);
  SetLength(Result, n1 + n2);
  for i := 0 to n1 - 1 do
    Result[i] := A1[i];
  for i := 0 to n2 - 1 do
    Result[n1 + i] := A2[i];
end;

var
  FFach: array of record
    Name: string;
    Semester: TSpinArr;
  end;
  X1, X2: TSpinArr;
  i: Integer;
begin
  SetLength(FFach, 11);

  FFach[0].Name := 'Mathematik';
  SetLength(FFach[0].Semester, 4);
  FFach[0].Semester[0] := SpinEditFach1Semester1;
  FFach[0].Semester[1] := SpinEditFach1Semester2;
  FFach[0].Semester[2] := SpinEditFach1Semester3;
  FFach[0].Semester[3] := SpinEditFach1Semester4;
  {usw.}
  SetLength(X1, 0);
  for i := Low(FFach) to High(FFach) do
  begin
    X2 := ErmittleSchlechteste(FFach[i].Semester, 2);
    X1 := Gesamtmenge(X1, X2);
  end;
  X1 := ErmittleSchlechteste(X1, 4);
end;

Geändert von Blup ( 4. Mär 2013 um 16:37 Uhr) Grund: Code ergänzt
  Mit Zitat antworten Zitat
 

 

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 20:43 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