This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
haas:fall2019:c4eng:projects:mtf1 [2019/09/23 12:36] – [Sample run using addition] wedge | haas:fall2019:c4eng:projects:mtf1 [2019/10/01 12:07] (current) – [Specifications] wedge | ||
---|---|---|---|
Line 13: | Line 13: | ||
=====Program===== | =====Program===== | ||
- | It is your task to enhance the program you wrote last week (**mtf0**) that will use loops and other programming concepts learned this far to automate the display of entire mathematical operation tables (addition, subtraction, | + | It is your task to enhance the program you wrote last week (**mtf0**) that will use loops and other programming concepts learned this far to automate the display of entire mathematical operation tables (addition, subtraction, |
+ | =====Specifications===== | ||
Your program should: | Your program should: | ||
+ | |||
* have valid, descriptive variable names of length //no shorter than// 4 symbols | * have valid, descriptive variable names of length //no shorter than// 4 symbols | ||
- | | + | * I will make an exception for the use of ' |
- | * properly store this in a variable of type (signed) | + | |
- | * check for a literal ' | + | * properly store this in a variable of type **char** |
- | * if invalid input, display an error and exit with a non-zero value | + | * check for a literal ' |
+ | * if invalid input, display an error and exit with a non-zero value of 1 | ||
* prompt for the starting row (0-9) | * prompt for the starting row (0-9) | ||
- | * properly store this in a variable of type **unsigned | + | * properly store this in a variable of type **unsigned |
- | * prompt for the endisg | + | * prompt for the ending |
- | * properly store this in a variable of type **unsigned | + | * properly store this in a variable of type **unsigned |
* prompt for the starting column (0-9) | * prompt for the starting column (0-9) | ||
- | * properly store this in a variable of type **unsigned | + | * properly store this in a variable of type **unsigned |
* prompt for the ending column (0-9) | * prompt for the ending column (0-9) | ||
- | * properly store this in a variable of type **unsigned | + | * properly store this in a variable of type **unsigned |
- | * check to make sure starting column, row is less than or equal to ending column, row | + | * check to make sure starting column, row is less than or equal to the corresponding |
- | * if not, display an error (to STDERR) and exit with non-zero status code | + | * if not, display an error (to STDERR) and exit with non-zero status code of 2 (for row) or 3 (for column) |
* display the table, performing the indicated operation | * display the table, performing the indicated operation | ||
* display both row and column headers, in uniform fashion/ | * display both row and column headers, in uniform fashion/ | ||
* display each numerical value in organized, consistent fashion, assuming two-digit numbers | * display each numerical value in organized, consistent fashion, assuming two-digit numbers | ||
* using a single return statement at the conclusion of the code, return a 0 indicating successful operation | * using a single return statement at the conclusion of the code, return a 0 indicating successful operation | ||
+ | |||
+ | Some additional points of consideration: | ||
+ | * Note that the driving variables in your loops need to be at least of type **short int**, otherwise you may get a warning when you compile it. | ||
+ | * Some results may be negative, allow for the display of negative values in your output. | ||
+ | * with certain (not all) operations on certain values, you might end up with a mathematically impossible result. In these cases, check for and avoid performing the computation, | ||
+ | * Only the table (headers/ | ||
+ | * For the math operations that are not associative, | ||
+ | * To display a ' | ||
+ | =====Compiling===== | ||
+ | As we have been doing all along, use the following options to gcc when compiling: | ||
+ | |||
+ | <cli> | ||
+ | lab46: | ||
+ | lab46: | ||
+ | </ | ||
=====Execution===== | =====Execution===== | ||
Line 40: | Line 58: | ||
====Sample run using multiplication==== | ====Sample run using multiplication==== | ||
<cli> | <cli> | ||
- | lab46: | + | lab46: |
Which operation: * | Which operation: * | ||
Starting Row (0-9): 4 | Starting Row (0-9): 4 | ||
Line 129: | Line 147: | ||
<cli> | <cli> | ||
lab46: | lab46: | ||
- | Which operation | + | Which operation: x |
- | ERROR: Must specify | + | ERROR: Must specify ' |
lab46: | lab46: | ||
</ | </ | ||
- | ====Sample run with invalid | + | ====Sample run with invalid |
<cli> | <cli> | ||
lab46: | lab46: | ||
- | Which operation | + | Which operation: + |
- | Row (0-9): 5 | + | Starting |
- | Starting Column | + | Ending |
- | Ending | + | ERROR: Starting |
- | ERROR: Starting | + | |
lab46: | lab46: | ||
</ | </ | ||
+ | |||
+ | =====Reference===== | ||
+ | In the C4ENG public directory, inside the **mtf1** subdirectory, | ||
=====Submission===== | =====Submission===== | ||
Line 177: | Line 197: | ||
*: | *: | ||
*: | *: | ||
- | *: | ||
*: | *: | ||
*:mtf1:no negative compiler messages for program [13/13] | *:mtf1:no negative compiler messages for program [13/13] |