Einzelnen Beitrag anzeigen

Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#9

AW: Summe aus vorgegebenen Zahlen Bilden

  Alt 28. Mai 2019, 09:55
Vom Prinzip müsste es doch so funktionieren:

Delphi-Quellcode:
procedure Button1Click(Sender: TObject);
var
  iZweihundertE : Integer;
  iEinhundertE : Integer;
  iFuenfzigE : Integer;
  iZwanzigE : Integer;
  iZehnE : Integer;
  iFuenfE : Integer;
  iZweiE : Integer;
  iEinE : Integer;
  iFuenfzigC : Integer;
  iZwanzigC : Integer;
  iZehnC : Integer;
  iFuenfC : Integer;
  iZweiC : Integer;
  iEinC : Integer;
  iTrinkgeldE : Integer;
  iTrinkgeldC : Integer;
begin
  iZweihundertE := 1;
  iEinhundertE := 0;
  iFuenfzigE := 0;
  iZwanzigE := 2;
  iZehnE := 0;
  iFuenfE := 6;
  iZweiE := 9;
  iEinE := 0;
  iFuenfzigC := 10;
  iZwanzigC := 0;
  iZehnC := 0;
  iFuenfC := 3;
  iZweiC := 0;
  iEinC := 0;
  iTrinkgeldE := 25;
  iTrinkgeldC := 10;

  while (iTrinkgeldE >= 200) and
        (iZweihundertE > 0 ) do
  begin
    dec(iZweihundertE);
    iTrinkgeldE := iTrinkgeldE - 200;
  end;
  while (iTrinkgeldE >= 100) and
        (iEinhundertE > 0 ) do
  begin
    dec(iEinhundertE);
    iTrinkgeldE := iTrinkgeldE - 100;
  end;
  while (iTrinkgeldE >= 50) and
        (iFuenfzigE > 0 ) do
  begin
    dec(iFuenfzigE);
    iTrinkgeldE := iTrinkgeldE - 50;
  end;
  while (iTrinkgeldE >= 20) and
        (iZwanzigE > 0 ) do
  begin
    dec(iZwanzigE);
    iTrinkgeldE := iTrinkgeldE - 20;
  end;
  while (iTrinkgeldE >= 10) and
        (iZehnE > 0 ) do
  begin
    dec(iZehnE);
    iTrinkgeldE := iTrinkgeldE - 10;
  end;
  while (iTrinkgeldE >= 5) and
        (iFuenfE > 0 ) do
  begin
    dec(iFuenfE);
    iTrinkgeldE := iTrinkgeldE - 5;
  end;
  while (iTrinkgeldE >= 2) and
        (iZweiE > 0 ) do
  begin
    dec(iZweiE);
    iTrinkgeldE := iTrinkgeldE - 2;
  end;
  while (iTrinkgeldE >= 1) and
        (iEinE > 0 ) do
  begin
    dec(iEinE);
    iTrinkgeldE := iTrinkgeldE - 1;
  end;
  while (iTrinkgeldC >= 50) and
        (iFuenfzigC > 0 ) do
  begin
    dec(iFuenfzigC);
    iTrinkgeldC := iTrinkgeldC - 50;
  end;
  while (iTrinkgeldC >= 20) and
        (iZwanzigC > 0 ) do
  begin
    dec(iZwanzigC);
    iTrinkgeldC := iTrinkgeldC - 20;
  end;
  while (iTrinkgeldC >= 10) and
        (iZehnC > 0 ) do
  begin
    dec(iZehnC);
    iTrinkgeldC := iTrinkgeldC - 10;
  end;
  while (iTrinkgeldC >= 5) and
        (iFuenfC > 0 ) do
  begin
    dec(iFuenfC);
    iTrinkgeldC := iTrinkgeldC - 5;
  end;
  while (iTrinkgeldC >= 2) and
        (iZweiC > 0 ) do
  begin
    dec(iZweiC);
    iTrinkgeldC := iTrinkgeldC - 2;
  end;
  while (iTrinkgeldC >= 1) and
        (iEinC > 0 ) do
  begin
    dec(iEinC);
    iTrinkgeldC := iTrinkgeldC - 1;
  end;
  if (iTrinkgeldE > 0) or
     (iTrinkgeldC > 0) then
    showmessage('Das Trinkgeld kann nicht komplett aufgeteilt werden. Restbtrag: ' + inttostr(iTrinkgeldE) + ',' + inttostr(iTrinkgeldC))
  else
    showmessage('Das Trinkgeld kann komplett aufgeteilt werden.');
end;
Das man das über eine eigene Funktion regeln kann, anstatt C&P ist mir klar, soll ja nur als Beispiel dienen.
Zudem lässt es sich beim abarbeiten der Listview (wenn es in eine externe Funktion gelagert wird) recht einfach umsetzen. Aber der TE soll ja auch noch was zu tun haben^^
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.

Geändert von Moombas (28. Mai 2019 um 09:59 Uhr)
  Mit Zitat antworten Zitat