Rekenen met breuken (opgave)
AN aug 2025decimal : 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!