Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#3

Re: Probleme mit Umrechnung und korrekter Ausgabe

  Alt 21. Dez 2008, 13:21
Zitat:
Delphi-Quellcode:
repeat
    iSilber := Random(6)
  until iSilber > 0; // Nullwert verhindern


Mach das lieber so:iSilber := Random(6) + 1; , dann brauchst Du keine Schleife.

Ansonsten würde ich mir einen Record für die Währungen definieren sowie 2 Umrechnungsfunktionen, ausgehend von der kleinsten Währung. Das könnte dann so aussehen:
Delphi-Quellcode:
(* Im Normalfall genügt es, diese Typdefinition direkt unter "implementation" zu schreiben.
  Es handelt sich hierbei um eine Struktur mit 4 Feldern für die jeweilige Währung.
   Angesprochen werden können diese Felder über die Punkt-Notation (s.u.) *)

type
  TMoneyRec = record
    iKreuzer,
    iHeller,
    iSilber,
    iDukaten: Cardinal;
  end;

//Rechnet die angegebenen Kreuzer in Währungen um und gibt das Ergebnis als Record zurück
function KreuzerToMoneyRec(cKreuzer: Cardinal): TMoneyRec;
begin
  //Beispiel: 1234 wurden übergeben

  Result.iKreuzer := cKreuzer mod 10; // = 4 Kreuzer (Rest bei Teilung durch 10)

  //jetzt wird erst durch 10 geteilt (= 123)
  //und davon wieder der Rest bei erneuter Teilung durch 10 ermittelt (= 3 Heller)
  Result.iHeller := cKreuzer div 10 mod 10;

  //nun analog das Gleiche, allerdings wird jetzt durch 100 geteilt
  Result.iSilber := cKreuzer div 100 mod 10;

  //zum Schluss brauchen wir keinen Rest mehr, das Ergebnis der Division ergibt die Dukaten
  Result.iDukaten := cKreuzer div 1000;
end;

//Rechnet den übergebenen Record wieder in Kreuzer zurück
//Rechenweg umgekehrt zu oben
function MoneyRecToKreuzer(aRec: TMoneyRec): Cardinal;
begin
  Result := aRec.iKreuzer +
            aRec.iHeller * 10 +
            aRec.iSilber * 100 +
            aRec.iDukaten * 1000;
end;
P.S.: Willkommen in der DP
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat