Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Algorithmen, Datenstrukturen und Klassendesign (https://www.delphipraxis.net/78-algorithmen-datenstrukturen-und-klassendesign/)
-   -   Delphi Algorithmus für Lagerverwaltung (https://www.delphipraxis.net/198256-algorithmus-fuer-lagerverwaltung.html)

xXDelphiNoobXx 17. Okt 2018 13:26


Algorithmus für Lagerverwaltung
 
Hallo,
seit September mache ich eine Ausbildung zum Anwendungsentwickler. Mein Schwerpunkt soll Delphi sein und nun habe ich folgende Aufgabe bekommen, komme aber absolut nicht weiter..
Gegeben ist eine Lagerfläche(Rechteckig) welche beliebig groß sein kann. Gelagert werden sollen rechteckige Flaschen in verschiedenen Größen(groß, mittel, klein). Wie die Flaschen eingelagert werden sieht man auf den Bildern. Wenn man nun eine Flasche einlagern will soll erst der verfügbare Platz ausgerechnet werden und wenn noch platz ist für die Flasche dies bestätigen. Am besten wäre es wenn man auch gesagt bekommt an welcher Position die Flasche eingelagert werden kann.

DieDolly 17. Okt 2018 13:28

AW: Algorithmus für Lagerverwaltung
 
:hello:

Zitat:

Am besten wäre es wenn man auch gesagt bekommt an welcher Position die Flasche eingelagert werden kann.
Hausaufgaben wird hier keiner für dich machen. Geholfen wird dir aber sicher. Halt nur nicht mit kompletten Code.

Ein angehender Anwendungsentwickler in Ausbildung sollte schon das grundlegende Denkvermögen besitzen, um an eine solche herangehen zu können.
Das hier hat mehr mit Mathematik zu tun als mit Delphi.

KodeZwerg 17. Okt 2018 13:42

AW: Algorithmus für Lagerverwaltung
 
Zitat:

Zitat von xXDelphiNoobXx (Beitrag 1415976)
Mein Schwerpunkt soll Delphi sein und nun habe ich folgende Aufgabe bekommen, komme aber absolut nicht weiter..

an welcher stelle kommst du nicht weiter? ich seh nur bilder.

Blup 18. Okt 2018 09:33

AW: Algorithmus für Lagerverwaltung
 
Die Flaschen sind nicht rechteckig, nur im Bild 3 nimmt jede Flasche eine rechteckige Fläche ein.
Es ist anzunehmen, dass nur jeweils eine Flaschengröße sortenrein eingelagert werden kann.

Konzept:
Man könnte das Lager durch jeweils eine Klasse für jede einzelne Flaschengröße simulieren.
Bei Programmstart erzeugt man das Lager für die gewünschte Flaschengröße und Lagerfläche.
Um eine Flasche hinzu zu fügen, fragt man eine freie Lagerposition ab.
Ist diese vorhanden (<> nil), setzt man für diese die Eigenschaft Besetzt.

Delphi-Quellcode:
TLagerPosition = class
  x: Integer;
  y: Integer;
  Besetzt: Boolean;
end;

TLagerPositionen = class(TObjectList<TLagerPosition>)
end;

TCustomLager = class
protected
  FItems: TLagerPositionen;
  procedure ErzeugePositionen(ARect: TRect); virtual; abstract;
public
  constructor Create(ARect: TRect);
  destructor Destroy; override;
  function GibFreieLagerPosition: TLagerPosition;
end;

{konkrete Lagerklassen für Flaschengröße A, B und C}

TLagerA = class(TCustomLager)
protected
  procedure ErzeugePositionen(ARect: TRect); override;
end;

TLagerB = class(TCustomLager)
protected
  procedure ErzeugePositionen(ARect: TRect); override;
end;

TLagerC = class(TCustomLager)
protected
  procedure ErzeugePositionen(ARect: TRect); override;
end;

implementation

constructor TCustomLager.Create(ARect: TRect);
begin
  inherited Create;

  FItems := TLagerPositionen.Create;
  ErzeugePositionen(ARect);
end;

destructor TCustomLager.Destroy;
begin
  FItems.Free;

  inherited;
end;

function TCustomLager.GibFreieLagerPosition: TLagerPosition;
var
  lItem: TLagerPosition;
begin
  for lItem in FItems do
  begin
    if not lItem.Besetzt then
    begin
      Result := lItem;
      Exit;
    end;
  end;
  Result = nil;
end;

p80286 18. Okt 2018 09:39

AW: Algorithmus für Lagerverwaltung
 
Bilder?
welche Bilder?

Gruß
K-H

DieDolly 18. Okt 2018 09:40

AW: Algorithmus für Lagerverwaltung
 
Die hat er wahrscheinlich entfernt, damit sein Lehrer ihm nicht auf die Scliche kommt ;)

hoika 18. Okt 2018 15:04

AW: Algorithmus für Lagerverwaltung
 
Hallo,
ich würde die Fläche so in Quadrate aufteilen, wie die minimale Fläche der Flaschen ist.
Und dann einen Algorithmus schreiben, der nach freiem Platz sucht.

Lager: array[0..50,0..50] of X

Als ersten Ansatz.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:25 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