Rekenen met breuken (opgave)

AN aug 2025
decimal
: C>F ( C -- F ) 9 5 */ 32 + ;
: F>C ( F -- C ) 32 - 5 9 */ ;
Dit is bekende code voor het omzetten van Celsius naar Fahrenheit en omgekeerd. Als je geen floating point hebt werk je met gehele getallen en dus hele graden. Voor nauwkeuriger resultaten kun je inschalen, je herschrijft dan het programma bijvoorbeeld voor tienden van graden. Maar rekenen met breuken is ook een mogelijkheid. Input en output zijn beide een breuk (teller en noemer op stack).

Opgave 1 - bedenk de code voor C>>F en F>>C

Hint: je zult merken dat in de code geen deling nodig is.
\ t/n  teller/noemer
: C>>F ( ct cn -- ft fn ) ... ;
: F>>C ( ft fn -- ct cn ) ... ;
De output is een breuk, leuk, maar je wilt natuurlijk toch wel graag zijn waarde zien in de vorm van een decimale breuk.

Opgave 2 - bedenk de code voor .Q

\ Druk t/n (het quotient van t en n) af als decimale breuk
: .Q ( t n #dec -- )  \ #dec = aantal decimalen
    ... ;
Voorbeelden

21 c>f . <rtn> 69
22 c>f . <rtn> 71

21  1  c>>f 3 .q <rtn> 69.800
22  1  c>>f 4 .q <rtn> 71.6000
215 10 c>>f 5 .q <rtn> 70.70000
707 10 f>>c 6 .q <rtn> 21.500000
355 113    32 .q <rtn> 3.14159292035398230088495575221238
1000 998   32 .q <rtn> 1.00200400801603206412825651302605
Succes!