Deine Basiseinheiten definierst du weiter als Aufzählungstyp:
Delphi-Quellcode:
type
TFundamentalUnit = (fuKN, fuM);
Die zusammengesetzten Einheiten lassen sich auch in Exponentenschreibweise aufschreiben. Die Exponenten kannst du dann einfach in einem Array speichern.
Delphi-Quellcode:
type
TDerivedUnit = array[fuKN..fuM] of Integer.
TUnitStyle | Exponentenschreibweise | Arrayinhalt |
usNone | kN^0 * m^0 | 0, 0 |
usKNdivM3 | kN^1 * m^(-3) | 1, -3 |
usKNM | kN^1 * m^1 | 1, 1 |
sKN | kN^1 * m^0 | 1, 0 |
usM3 | kN^0 * m^3 | 0, 3 |
Zum Beispiel die Multiplikation kann man nun ganz einfach auf eine Addition der Array-Einträge abbilden (quasi mit den Rechenregeln für Potenzen):
- usM3 * usKNdivM2
- (kN^0 * m^3) * (kN^1 * m^(-2))
- (kN^(0+1) * m^(3-2)
- kN^1 * m^1
- usKNM
Ich hoffe das ist verständlicher