Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

FIND SUM OF POSTFIX CALCULATOR FILE I Have coded something already but, it gives me an error with this description Exception thrown at 0x00048E58 in

FIND SUM OF POSTFIX CALCULATOR FILE

I Have coded something already but, it gives me an error with this description "Exception thrown at 0x00048E58 in Postfix Modified 2.exe: 0xC0000094: Integer division by zero."

If this code could be edited to fix the problem or if you have your own solution it would be greatly appreciated!!!!

Modify your Postfix Calculator to read entries from a file, one line at a time. For those entries that are valid, compute the value and keep a running total. Display that sum and the number of invalid entries that were in the file. We will consider a postfix expression to be invalid if: An operation is encountered, but there are not at least two entries on the stack. The postfix expression has been consumed, but there is not exactly one entry remaining on the stack.

CODE:

#include #include #include using namespace std;

// Stack type struct Stack { int top; unsigned capacity; int* array; };

// Stack Operations struct Stack* createStack(unsigned capacity) { struct Stack* stack = (struct Stack*)malloc(sizeof(struct Stack));

if (!stack) return NULL;

stack->top = -1; stack->capacity = capacity; stack->array = (int*)malloc(stack->capacity * sizeof(int));

if (!stack->array) return NULL;

return stack; }

int isEmpty(struct Stack* stack) { return stack->top == -1; }

char peek(struct Stack* stack) { return stack->array[stack->top]; }

char pop(struct Stack* stack) { if (!isEmpty(stack)) return stack->array[stack->top--]; return '$'; }

void push(struct Stack* stack, char op) { stack->array[++stack->top] = op; }

// The main function that returns value of a given postfix expression int evaluatePostfix(char* exp) { // Create a stack of capacity equal to expression size struct Stack* stack = createStack(strlen(exp)); int i;

// See if stack was created successfully if (!stack) return -1;

// Scan all characters one by one for (i = 0; exp[i]; ++i) { // If the scanned character is an operand (number here), // push it to the stack. if (isdigit(exp[i])) push(stack, exp[i] - '0');

// If the scanned character is an operator, pop two // elements from stack apply the operator else { int val1 = pop(stack); int val2 = pop(stack); switch (exp[i]) { case '+': push(stack, val2 + val1); break; case '-': push(stack, val2 - val1); break; case '*': push(stack, val2 * val1); break; case '/': push(stack, val2 / val1); break; } } } return pop(stack); }

// Driver program to test above functions int main() { ifstream in("test.txt"); //adding input into test.txt char buf[180]; while (in.getline(buf, sizeof(buf))) { // do evaluation cout << "postfix evaluation: " << evaluatePostfix(buf) << ' '; } return 0; }

Contents of the File:

133 -167 - 79 196 / 13 125 139 -59 -168 163 17 / + / - + + + + -14 -46 54 128 * * % 147 2 + 10 / 45 * 191 % -188 % 171 45 * -132 % 31 % 93 + -90 - -91 % 176 - 80 147 - 89 + / 39 129 + 93 * -175 164 * 83 / % -93 163 - 4 * * 174 25 99 41 187 - 177 + / * % 105 33 % 1 / -37 27 -58 + 4 % + + 149 / -59 32 136 140 - / * 192 % 63 93 + + 167 % 21 -16 36 * - / 99 196 / 191 31 92 + * 57 - 58 198 * -57 + + 179 % 7 -102 -174 65 66 * / + - 37 193 / -17 28 103 109 * - 23 79 92 - -91 + 100 * + % + - 126 -3 + 111 18 % 35 / 163 - 119 78 + 73 124 191 + 44 57 168 - 14 / + -180 140 - * * + % 48 -38 -108 + + 131 -134 27 / 175 * 175 -90 - + % + 120 104 % 13 - 193 - 47 84 + -54 67 163 29 * % % + 159 13 * 2 100 56 47 / + * - 167 -152 * 168 192 -129 + 176 57 38 80 65 % + % / - * % 57 172 / -168 - 666 130 172 -82 -183 / - 117 - + 165 114 17 * / 154 % + 124 96 % + -133 173 + 9 107 - * 106 / 101 * -136 59 % * 159 -155 - 96 165 / 41 33 - 172 -148 - 148 38 -129 * / - 18 -137 -32 - % 67 126 103 % / 65 % -53 119 82 64 % 15 + / - % 176 51 75 68 / 46 123 57 % * * * + 122 109 74 102 116 182 - * * + % 15 110 164 43 -117 167 66 * 124 -155 + - - 64 155 % % + - + / 45 -57 * -81 * -41 - 83 122 167 113 101 / -33 -26 + - * - - 147 80 169 185 + 151 20 135 8 198 * / + * / - - * 141 122 + 156 123 * 2 -157 - 108 132 77 + 22 174 12 - 32 + % - * / 93 199 % 93 + 17 165 133 - 139 + * 93 - * 187 160 -177 5 - 117 + % 71 / 138 -153 % - * 32 1 64 72 + 108 * * 160 199 + * % -85 111 * + -136 144 - 123 149 149 * 15 171 123 % % -59 * - -184 178 % 22 170 - 60 * 25 71 * -131 192 - 57 9 - -137 -162 * % % % 71 -177 % 96 144 116 133 -69 176 42 * + % + % + 158 22 + 99 / -49 / -84 * 181 95 15 137 39 / -65 + / * + / 40 178 92 85 * 77 - + +

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Visual Basic Net Database Programming

Authors: Rod Stephens

1st Edition

0789726815, 978-0789726810

More Books

Students also viewed these Databases questions

Question

Construct the truth table for a three-input Exclusive-NOR gate.

Answered: 1 week ago