PLEASE HOW DO I PUT THIS C PROGRAM INTO A SWITCH STATEMENT E
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]!=\'\\0\'; 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] = \'\\0\';
}
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]);
}
Solution
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]!=\'\\0\'; 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] = \'\\0\';
}
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]);
}




