diff options
Diffstat (limited to 'reference/C/CONTRIB/OR_PRACTICAL_C/07_3.c')
-rw-r--r-- | reference/C/CONTRIB/OR_PRACTICAL_C/07_3.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/reference/C/CONTRIB/OR_PRACTICAL_C/07_3.c b/reference/C/CONTRIB/OR_PRACTICAL_C/07_3.c new file mode 100644 index 0000000..bf66eb7 --- /dev/null +++ b/reference/C/CONTRIB/OR_PRACTICAL_C/07_3.c @@ -0,0 +1,44 @@ +#include <stdio.h> +char line[100]; /* line of text from input */ + +int result; /* the result of the calculations */ +char operator; /* operator the user specified */ +int value; /* value specified after the operator */ +main() +{ + result = 0; /* initialize the result */ + + /* loop forever (or until break reached) */ + while (1) { + (void) printf("Result: %d\n", result); + (void) printf("Enter operator and number: "); + + (void) fgets(line, sizeof(line), stdin); + (void) sscanf(line, "%c %d", &operator, &value); + + if ((operator == 'q') || (operator == 'Q')) + break; + switch (operator) { + case '+': + result += value; + break; + case '-': + result -= value; + break; + case '*': + result *= value; + break; + case '/': + if (value == 0) { + (void)printf("Error:Divide by zero\n"); + (void)printf(" operation ignored\n"); + } else + result /= value; + break; + default: + (void) printf("Unknown operator %c\n", operator); + break; + } + } + return (0); +} |