Thema: Prism Fahrkartenautomat

Einzelnen Beitrag anzeigen

Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.767 Beiträge
 
Delphi 10.4 Sydney
 
#7

Re: Fahrkartenautomat

  Alt 18. Mär 2009, 09:34
.. eigentlich wollte ich ja von den ganzen while Schleifen Gedöns weg.

Im Prinzip könnte es doch so laufen:

Delphi-Quellcode:
Rückgeld = gezahltesGeld - Fahrkarte

While Rückgeld > 0 do
  begin
    100erRück := Rückgeld div 100;
    if 100erRück > 100erVorhaden then
      begin
        Rückgeld := Rückgeld - (100erVorhanden * 100);
      end
    else
      begin
        100erVorhanden := 100erVorhanden - 100erRück;
        Rückgeld := Rückgeld - (100erVorhanden * 100)
      end;
    ...
     50er
    ...
     20er
    ...
     10er
  end;
Wenn mann noch die Schein und Münzwerte (und eventuell deren Anzahl) in ein Array packt
kann man durch das Array laufen und kann sich die lange Abfolge
von Abprüfugen sparen.

So könnte man ein Record Geld erstellen
Delphi-Quellcode:
  TGeld = record
    wert : Integer;
    anzahl : Integer;
  end;
und ein Array Geldspeicher

GeldSpeicher = Array [0..10] of TGeld;
Delphi-Quellcode:
Rückgeld = gezahltesGeld - Fahrkarte;
for i:=0 to length(Geldspeicher) -1 do
  if Rückgeld > 0 then
    begin
      tempRück := Rückgeld div Geldspeicher[i].wert;
      if tempRück > Geldspeicher[i].anzahl then
        begin
          Rückgeld := Rückgeld - (Geldspeicher[i].anzahl * Geldspeicher[i].wert);
          Geldspeicher[i].anzahl:=0;
        end
      else
        begin
          Geldspeicher[i].anzahl := Geldspeicher[i].anzahl - tempRück;
          Rückgeld := Rückgeld - (tempRück * Geldspeicher[i].wert)
        end;
    end;

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat