PLEASE HOW DO I PUT THIS C++ PROGRAM INTO A SWITCH STATEMENT EXAMPLE: switch (ch
ID: 3926549 • Letter: P
Question
PLEASE HOW DO I PUT THIS C++ PROGRAM INTO A SWITCH STATEMENT
EXAMPLE: switch (ch)
{
case 'a';
(statement )
break;
case 'a';
(statement )
break;
}
#include <iostream>
#include <stdio.h>
#include <ctype.h>
#define MAX 40
using namespace std;
struct stack
{
int dat [MAX];
int top;
};
int precedence (char);
void init (stack *);
int empty (stack *);
int full (stack *);
int pop (stack *);
void push (stack *, int);
int top (stack *);
void infix_to_postfix (char infix[], char postfix[]);
void eval_postfix (char postfix[]);
int evaluate (char x, int op1, int op2);
int main()
{
char infix [30], postfix [30];
int option= 1;
while(option == 1) // while loop condition option = 1 initially
{
printf (" Enter an infix expression : ");
scanf ("%s", infix);
infix_to_postfix (infix, postfix);
printf (" Postfix expression is : %s ", postfix);
printf (" ");
printf("Do you want to continue? Enter 1 for yes 0 for no: "); // set loop condition
scanf("%d",&option);
if(option != 1)
break;
}
return 0;
}
void infix_to_postfix (char infix[], char postfix[])
{
stack s;
char x;
int i, j; // i-index for infix[], j-index for postfix
char token;
init (&s);
j = 0;
for (i = 0; infix[i]!=''; i++)
{
token = infix[i];
if (isalnum (token))
postfix[j++] = token;
else
if (token == '(')
push (&s, '(');
else
if (token == ')')
while ((x = pop (&s)) !='(')
postfix[j++] = x;
else
{
while (precedence (token) <= precedence (top (&s)) && !empty (&s))
{
x = pop (&s);
postfix[j++] = x;
}
push (&s, token);
}
}
while (!empty (&s))
{
x = pop (&s);
postfix[j++] = x;
}
postfix[j] = '';
}
int precedence (char x)
{
if (x == '(') return (0);
if (x == '+' || x == '-') return (1);
if (x == '*' || x == '/' || x == '%') return (2);
return (3);
}
void init (stack *s)
{
s->top = -1;
}
int empty (stack *s)
{
if (s->top == -1) return (1);
return (0);
}
int full (stack *s)
{
if (s->top == MAX - 1) return (1);
return (0);
}
void push (stack *s, int x)
{
s->top = s->top + 1;
s->dat [s->top] = x;
}
int pop (stack *s)
{
int x;
x = s->dat [s->top];
s->top = s->top - 1;
return (x);
}
int top (stack * p)
{
return (p->dat [p->top]);
}
Explanation / Answer
Here is the modified code for you, which uses the switch case:
#include <stdio.h>
#include <ctype.h>
#define MAX 40
typedef struct stack
{
int dat [MAX];
int top;
}stack;
int precedence (char);
void init (stack *);
int empty (stack *);
int full (stack *);
int pop (stack *);
void push (stack *, int);
int top (stack *);
void infix_to_postfix (char infix[], char postfix[]);
void eval_postfix (char postfix[]);
int evaluate (char x, int op1, int op2);
int main()
{
char infix [30], postfix [30];
int option= 1;
while(option == 1) // while loop condition option = 1 initially
{
printf (" Enter an infix expression : ");
scanf ("%s", infix);
infix_to_postfix (infix, postfix);
printf (" Postfix expression is : %s ", postfix);
printf (" ");
printf("Do you want to continue? Enter 1 for yes 0 for no: "); // set loop condition
scanf("%d",&option);
if(option != 1)
break;
}
return 0;
}
void infix_to_postfix (char infix[], char postfix[])
{
stack s;
char x;
int i, j; // i-index for infix[], j-index for postfix
char token;
init (&s);
j = 0;
for (i = 0; infix[i]!=''; i++)
{
token = infix[i];
if (isalnum (token))
postfix[j++] = token;
else
{
switch(token)
{
case '(':
push (&s, '('); break;
case ')':
while ((x = pop (&s)) !='(')
postfix[j++] = x;
break;
default:
{
while (precedence (token) <= precedence (top (&s)) && !empty (&s))
{
x = pop (&s);
postfix[j++] = x;
}
push (&s, token);
}
}
}
}
while (!empty (&s))
{
x = pop (&s);
postfix[j++] = x;
}
postfix[j] = '';
}
int precedence (char x)
{
if (x == '(') return (0);
if (x == '+' || x == '-') return (1);
if (x == '*' || x == '/' || x == '%') return (2);
return (3);
}
void init (stack *s)
{
s->top = -1;
}
int empty (stack *s)
{
if (s->top == -1) return (1);
return (0);
}
int full (stack *s)
{
if (s->top == MAX - 1) return (1);
return (0);
}
void push (stack *s, int x)
{
s->top = s->top + 1;
s->dat [s->top] = x;
}
int pop (stack *s)
{
int x;
x = s->dat [s->top];
s->top = s->top - 1;
return (x);
}
int top (stack * p)
{
return (p->dat [p->top]);
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.