home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / forth / compiler / fpc / source / p3_20dc.seq < prev    next >
Text File  |  1990-04-05  |  2KB  |  68 lines

  1. \ Answer for problem 3.10 by Dickson Cheng  04/04/90 21:30:34.56
  2.  
  3.  
  4. \ (IN) leaves a true flag if a < x < b , otherwise false.
  5. : (IN)          ( x a b -- flag )
  6.         OVER 1 PICK > IF SWAP THEN
  7.         -ROT OVER < -ROT > AND ;
  8.  
  9. \ [IN] leaves a true flag if a <= x <= b
  10. : [IN]          ( x a b -- flag )
  11.         1+ SWAP 1- SWAP (IN) ;
  12.  
  13. \ Leaves true flag if speed < 0
  14. : BROKEN? ( speed -- flag ) 0< ;
  15.  
  16. \ Leaves true flag if speed is between 0 to 15 kmph
  17. : VERY_SLOW? ( speed -- flag ) 0 15 [IN] ;
  18.  
  19. \ Leaves true flag if speed is between 16 to 30 kmph
  20. : SLOW? ( speed -- flag ) 16 30 [IN] ;
  21.  
  22. \ Leaves true flag if speed is between 31 to 55 kmph
  23. : NORMAL? ( speed -- flag ) 31 55 [IN] ;
  24.  
  25. \ Leaves true flag if speed is between 56 to 65 kmph
  26. : FAST? ( speed -- flag ) 56 65 [IN] ;
  27.  
  28. \ Leaves true flag if speed is between 66 to 99 kmph
  29. : VERY_FAST? ( speed -- flag ) 66 99 [IN] ;
  30.  
  31. \ Leaves true flag if speed is between 100 to 199
  32. : DANGEROUS? ( speed -- flag ) 100 199 [IN] ;
  33.  
  34. \ Leaves true flag if speed is over 199
  35. : DEADLY? ( speed -- flag ) 199 > ;
  36.  
  37.  
  38. \ Check speed and print appropriate message
  39. : SPEED_CHECK           ( speed -- )
  40.    DUP BROKEN?
  41.    IF                     ." Impossible speed, must be something wrong!" DROP
  42.    ELSE DUP VERY_SLOW?
  43.       IF                  ." Issue ticket,     impeding traffic flow." DROP
  44.       ELSE DUP SLOW?
  45.          IF               ." Issue warning,    impeding traffic flow." DROP
  46.          ELSE DUP NORMAL?
  47.             IF            ." No action,        safe speed." DROP
  48.             ELSE DUP FAST?
  49.                IF          ." Issue warning,   exceeding speed limit." DROP
  50.                ELSE DUP VERY_FAST?
  51.                   IF       ." Issue ticket,    exceeding speed limit." DROP
  52.                   ELSE DUP DANGEROUS?
  53.                      IF    ." Arrest motorist, dangerous driving." DROP
  54.                      ELSE DUP DEADLY?
  55.                         IF ." Deadly serious,  got to catch him."
  56.                         THEN
  57.                      THEN
  58.                   THEN
  59.                THEN
  60.             THEN
  61.          THEN
  62.       THEN
  63.    THEN ;
  64.  
  65.  
  66.  
  67.  
  68.