29 lines · 1023 B · Forth
RawDownload
\ "No Weighting" from Starting Forth Chapter 12VARIABLE DENSITYVARIABLE THETAVARIABLE ID : Q ( -- addr )   [CHAR] Q WORD DUP C@ 1+ ALLOT ; : MATERIAL ( addr n1 n2 -- )    \ addr=string, n1=density, n2=theta   CREATE  , , ,    DOES> ( -- )   DUP @ THETA !   CELL+ DUP @ DENSITY !  CELL+ @ ID ! ; : .SUBSTANCE ( -- )   ID @ COUNT TYPE ;: FOOT ( n1 -- n2 )   10 * ;: INCH ( n1 -- n2 )   100 12 */  5 +  10 /  + ;: /TAN ( n1 -- n2 )   1000 THETA @ */ ; : PILE ( n -- )         \ n=scaled height   DUP DUP 10 */ 1000 */  355 339 */  /TAN /TAN   DENSITY @ 200 */  ." = " . ." tons of "  .SUBSTANCE ; \ table of materials\   string-address  density  tan[theta]    Q cement Q           131        700  MATERIAL CEMENT   Q loose gravel Q      93        649  MATERIAL LOOSE-GRAVEL   Q packed gravel Q    100        700  MATERIAL PACKED-GRAVEL   Q dry sand Q          90        754  MATERIAL DRY-SAND   Q wet sand Q         118        900  MATERIAL WET-SAND   Q clay Q             120        727  MATERIAL CLAY