SetCoinsPerUnits()

FUNKTION:
     void SetCoinsPerUnits(int coins, int units);

DEFINIERT IN:
     /std/unit.c

ARGUMENTE:
     coins
          Zahl der Muenzen
     units
          Zahl der Einheiten

BESCHREIBUNG:
     Es wird festgelegt, wieviel eine bestimmte Menge der Einheiten kostet.
     Eine einzelne Einheit kostet coins/units Muenzen.

RUeCKGABEWERT:
     keiner

BEMERKUNGEN:
     Bei der Preisberechnung wird abgerundet. Hat man also ein Verhaeltnis
     von einer Muenze pro zwei Einheiten, so ist der Preis einer einzelnen
     Einheit 0!

BEISPIELE:
     Eine Einheit soll 3.5 Muenzen wert sein:

     /* 7 Muenzen / 2 Einheiten = 3.5 Muenzen / Einheit */
     SetCoinsPerUnits(7,2);

SIEHE AUCH:
     QueryCoinsPerUnits(), SetGramsPerUnits(), QueryGramsPerUnits(),
     /std/unit.c

----------------------------------------------------------------------------
Last modified: Wed May 8 10:24:57 1996 by Wargon
