Thema: Delphi schleife

Einzelnen Beitrag anzeigen

Benutzerbild von Fussball-Robby
Fussball-Robby

Registriert seit: 22. Okt 2007
Ort: Nähe Köln
1.063 Beiträge
 
Delphi 7 Enterprise
 
#7

Re: schleife

  Alt 11. Apr 2008, 16:23
@metze222: Du hast Glück, ich habe so etwas vor nem Monat auch geschrieben und habe gerade sowieso nichts zu tun, also hab ich den Code gearde mal schnell kommentiert

1.: Eine Klasse TMuenzhaufen(ich weiß, toller Name ) mit den Eigenschaften Gesamt für den Gesamtwert, dem Array Muenzen für die Anzahl der einzelnen Münzen und der Prozedur zum trennen.
Delphi-Quellcode:
type
  TMuenzhaufen = class
    Gesamt : Integer;
      //Gesamtwert
    Muenzen: Array[0..5] of Integer;
      //Array mit den Münzen:
      //0: 50Cent, 1: 20Cent, 2: 10Cent, 3: 5Cent, 4: 2Cent, 5: 1Cent
    procedure Trennen;
  end;
2.: Die procdedure trennen, dürfte durch Kommentare eigentlich klar sein:
Delphi-Quellcode:
procedure TMuenzhaufen.Trennen;
var
  i, j: Integer;
const
  Muenze: Array[0..5] of Integer = (50, 20, 10, 5, 2, 1);
    //Array mit allen Münzen, von groß nach klein
begin
  j := 0;
    //Bei der größten Münze beginnen
  i := Gesamt;
  while i > 0 do
    //Schleife durchlaufen, solange noch Restgeld da ist
  begin
    while i >= Muenze[j] do
      //Solange mehr Geld da ist, als die aktuelle Münze wert ist, ..
    begin
      Inc(Muenzen[j]);
        //..die Anzahl der aktuellen Münze um 1 erhöhen und..
      Dec(i, Muenze[j]);
        //.. den Wert der aktuellen Münze vom Gesamtwert abziehen
    end;
    Inc(j);
      //Wenn der Gesamtwert kleiner als der Wert der aktuellen Münze ist
      //(Schleife wurde verlassen), zur nächstkleineren Münze gehen
  end;
end;

3.:Ein Beispielaufruf, in dem die Anzahl der einzelnen Münzen des Wertes aus Edit1 in Memo1 angezeigt werden:
Delphi-Quellcode:
var m:TMuenzHaufen;
begin
  m := TMuenzhaufen.Create;
  with m do
  begin
    try
      Gesamt := StrToInt(Edit1.text);
      Trennen;

      Memo1.Clear;
      Memo1.Lines.Add('50Cent-Münzen: '+IntToStr(Muenzen[0]));
      Memo1.Lines.Add('20Cent-Münzen: '+IntToStr(Muenzen[1]));
      Memo1.Lines.Add('10Cent-Münzen: '+IntToStr(Muenzen[2]));
      Memo1.Lines.Add('5Cent-Münzen: '+IntToStr(Muenzen[3]));
      Memo1.Lines.Add('2Cent-Münzen: '+IntToStr(Muenzen[4]));
      Memo1.Lines.Add('1Cent-Münzen: '+IntToStr(Muenzen[5]));
    finally
      FreeAndNil(m);
    end;
  end;
Mfg

PS.: Du solltest dir aber mal Grundlagen-Tutorials angucken, denn die Schleifen sind neben Bedingungen(If-Abfragen) so ziemlich das Grundlegenste beim Programmieren, was man auf jeden Fall kennen sollte.
Robert L.
Der folgende Satz ist richtig!
Der vorherige Satz ist falsch!

Paradox
  Mit Zitat antworten Zitat