![]() |
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. |
AW: Algorithmus für Lagerverwaltung
:hello:
Zitat:
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. |
AW: Algorithmus für Lagerverwaltung
Zitat:
|
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; |
AW: Algorithmus für Lagerverwaltung
Bilder?
welche Bilder? Gruß K-H |
AW: Algorithmus für Lagerverwaltung
Die hat er wahrscheinlich entfernt, damit sein Lehrer ihm nicht auf die Scliche kommt ;)
|
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 09:35 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 by Thomas Breitkreuz