C programming: Stacks. Help fully understand the code below by putting comments. THanks! ... #include #include #include #include int numbers[500], tn=-1, to=-1; char ops[500]; void pushNum(int n) { numbers[++tn] = n; } void pushOp(char ch) { ops[++to]=ch; } int popNum() { return numbers[tn--]; } char popOp() { return ops[to--]; } 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; default: return 0; } } int isOperator(char ch) { return(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='^'); } int evaluate(char exp[200]){ int i,num,output,r; char c; for(i=0;exp[i]!='\0';i++) { c = exp[i]; if(isdigit(c)!=0) { num = 0; while (isdigit(c)) { num = num*10 + (c-'0'); i++; if(i
C programming: Stacks. Help fully understand the code below by putting comments. THanks! ... #include #include #include #include int numbers[500], tn=-1, to=-1; char ops[500]; void pushNum(int n) { numbers[++tn] = n; } void pushOp(char ch) { ops[++to]=ch; } int popNum() { return numbers[tn--]; } char popOp() { return ops[to--]; } 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; default: return 0; } } int isOperator(char ch) { return(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='^'); } int evaluate(char exp[200]){ int i,num,output,r; char c; for(i=0;exp[i]!='\0';i++) { c = exp[i]; if(isdigit(c)!=0) { num = 0; while (isdigit(c)) { num = num*10 + (c-'0'); i++; if(i
Database System Concepts
7th Edition
ISBN:9780078022159
Author:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Chapter1: Introduction
Section: Chapter Questions
Problem 1PE
Related questions
Question
100%
C programming: Stacks. Help fully understand the code below by putting comments. THanks!
...
#include<stdio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
int numbers[500], tn=-1, to=-1;
char ops[500];
void pushNum(int n) {
numbers[++tn] = n;
}
void pushOp(char ch)
{
ops[++to]=ch;
}
int popNum() {
return numbers[tn--];
}
char popOp() {
return ops[to--];
}
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;
default: return 0;
}
}
int isOperator(char ch)
{
return(ch=='+'||ch=='-'||ch=='*'||ch=='/'||ch=='^');
}
int evaluate(char exp[200]){
int i,num,output,r;
char c;
for(i=0;exp[i]!='\0';i++)
{
c = exp[i];
if(isdigit(c)!=0)
{
num = 0;
while (isdigit(c))
{
num = num*10 + (c-'0');
i++;
if(i <strlen(exp))
c = exp[i];
else
break;
}
i--;
pushNum(num);
}
else if(c=='(')
{
pushOp(c);
}
else if(c==')')
{
while(ops[to]!='(')
{
r = applyOp(popNum(), popNum(), popOp());
pushNum(r);
}
popOp();
}
else if(isOperator(c))
{
while(to!=-1 && precedence(c)<=precedence(ops[to]))
{
output = applyOp(popNum(), popNum(), popOp());
pushNum(output);
}
pushOp(c);
}
}
while(to!=-1)
{
output = applyOp(popNum(), popNum(), popOp());
pushNum(output);
}
return popNum();
}
int main() {
printf("%d\n", evaluate("10 + 2 * 6"));
printf("%d\n", evaluate("100 * 2 + 12"));
printf("%d\n", evaluate("100 * ( 2 + 12 )"));
printf("%d\n", evaluate("100 * ( 2 + 12 ) / 14"));
return 0;
}
Expert Solution
This question has been solved!
Explore an expertly crafted, step-by-step solution for a thorough understanding of key concepts.
This is a popular solution!
Trending now
This is a popular solution!
Step by step
Solved in 6 steps with 4 images
Knowledge Booster
Learn more about
Need a deep-dive on the concept behind this application? Look no further. Learn more about this topic, computer-science and related others by exploring similar questions and additional content below.Recommended textbooks for you
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
Database System Concepts
Computer Science
ISBN:
9780078022159
Author:
Abraham Silberschatz Professor, Henry F. Korth, S. Sudarshan
Publisher:
McGraw-Hill Education
Starting Out with Python (4th Edition)
Computer Science
ISBN:
9780134444321
Author:
Tony Gaddis
Publisher:
PEARSON
Digital Fundamentals (11th Edition)
Computer Science
ISBN:
9780132737968
Author:
Thomas L. Floyd
Publisher:
PEARSON
C How to Program (8th Edition)
Computer Science
ISBN:
9780133976892
Author:
Paul J. Deitel, Harvey Deitel
Publisher:
PEARSON
Database Systems: Design, Implementation, & Manag…
Computer Science
ISBN:
9781337627900
Author:
Carlos Coronel, Steven Morris
Publisher:
Cengage Learning
Programmable Logic Controllers
Computer Science
ISBN:
9780073373843
Author:
Frank D. Petruzella
Publisher:
McGraw-Hill Education