/* * hw7#5 * CS 381 homework 7 problem 5 * NOTE that this is pseudocode and will not compile! * Jacob Lundberg */ /* * Problem Five */ CONDITION BADARGS; /* CALC computes a retail price. */ CALC: PROCEDURE OPTIONS (UNITS, PRICE, MARKUP); /* Raise BADARGS if necessary. */ IF UNITS <= 0 THEN SIGNAL BADARGS; IF PRICE <= 0 THEN SIGNAL BADARGS; IF MARKUP > 1 THEN SIGNAL BADARGS; IF MARKUP < -1 THEN SIGNAL BADARGS; /* Compute. (and maybe throw a math exception) */ CALC = (UNITS * PRICE) * (1 + MARKUP); END CALC; /* MAIN loops on CALC. */ MAIN: PROCEDURE OPTIONS (); /* exception handlers */ ON BADARGS BEGIN; PRINT "Bad arguments to CALC."; GOTO TOP; END; ON MATHERROR BEGIN; PRINT "Bad values, unable to compute."; GOTO TOP; END; ON UNDERFLOW BEGIN; PRINT "Underflow computing price total."; GOTO TOP; END; ON OVERFLOW BEGIN; PRINT "Overflow computing price total."; GOTO TOP; END; /* loop on input */ TOP: INPUT_LOOP: DO; UNITS = READINT; IF UNITS = 0 THEN GOTO BOT; PRICE = READINT; MARKUP = READINT; PRINT CALC (UNITS, PRICE, MARKUP / 100); END INPUT_LOOP; BOT: END MAIN;