Convert the code for C++ to C. theres also an error in it. Thanks! .... #include using namespace std; int precedence(char op){ if(op == '+'||op == '-') return 1; if(op == '*'||op == '/') return 2;...


Convert the code for C++ to C. theres also an error in it. Thanks!
....



#include

using namespace std;



int precedence(char op){



            if(op == '+'||op == '-')



            return 1;



            if(op == '*'||op == '/')



            return 2;



            return 0;



}






// this function will perform arithmetic operations.



int applyOp(int a, int b, char op){



            switch(op){



                        case '+': return a + b;



                        case '-': return a - b;



                        case '*': return a * b;



                        case '/': return a / b;



            }



}



int evaluate(string tokens){



            int i;






            //we are using  stack to store integer values.



            stack values;






            // using this stack to store operators.



            stack ops;






            for(i = 0; i < tokens.length();="">






                        if(tokens[i] == ' ')



                                    continue;






                        else if(tokens[i] == '('){



                                    ops.push(tokens[i]);



                        }






                        else if(isdigit(tokens[i])){



                                    int val = 0;






                                    while(i < tokens.length()="">



                                                                        isdigit(tokens[i]))



                                    {



                                                val = (val*10) + (tokens[i]-'0');



                                                i++;



                                    }






                                    i--;



                        }






                        else if(tokens[i] == ')')



                        {



                                    while(!ops.empty() && ops.top() != '(')



                                    {



                                                int val2 = values.top();



                                                values.pop();






                                                int val1 = values.top();



                                                values.pop();






                                                char op = ops.top();



                                                ops.pop();






                                                values.push(applyOp(val1, val2, op));



                                    }






                                    if(!ops.empty())



                                    ops.pop();



                        }






                                                else



                        {






                                    while(!ops.empty() && precedence(ops.top())



                                                                                                >= precedence(tokens[i])){



                                                int val2 = values.top();



                                                values.pop();






                                                int val1 = values.top();



                                                values.pop();






                                                char op = ops.top();



                                                ops.pop();






                                                values.push(applyOp(val1, val2, op));



                                    }






                                    // Push current token to 'ops'.



                                    ops.push(tokens[i]);



                        }



            }









            while(!ops.empty()){



                        int val2 = values.top();



                        values.pop();






                        int val1 = values.top();



                        values.pop();






                        char op = ops.top();



                        ops.pop();






                        values.push(applyOp(val1, val2, op));



            }






                        return values.top();



}






int main() {



            cout < evaluate("10="" +="" 2="" *="" 6")=""><>



            cout < evaluate("100="" *="" 2="" +="" 12")=""><>



            cout < evaluate("100="" *="" (="" 2="" +="" 12="" )")=""><>



            cout < evaluate("100="" *="" (="" 2="" +="" 12="" )="">



            return 0;



}

Jun 02, 2022
SOLUTION.PDF

Get Answer To This Question

Related Questions & Answers

More Questions »

Submit New Assignment

Copy and Paste Your Assignment Here