Please convert the following C code into java: #include<stdio.h> #include<proces
ID: 3562192 • Letter: P
Question
Please convert the following C code into java:
#include<stdio.h>
#include<process.h>
#include<string.h>
#include<ctype.h>
#include<conio.h>
#define size 30
struct stack
{
int top;
char item[30][7];
};
struct stack s1;
void push(char ele[])
{
s1.top=s1.top+1;
strcpy(s1.item[s1.top],ele);
}
int empty()
{
if(s1.top==-1)
return 1;
else
return 0;
}
char x[7];
char *pop()
{
if(empty())
printf(" invalid expression");
{
getch();
exit(0);
}
{
strcpy(x,s1.item[s1.top--]);
}
}
int isoperator(char c)
{
switch(c)
{
case '+':
case '-':
case '/':
case '*': return(1);
default : return(0);
}
}
void evaluate(char ch)
{
static int i=1;
char temp[7]={'T','e','m','p',''};
char op1[7],op2[7];
pop();
strcpy(op2,x);
pop();
strcpy(op1,x);
if(!strcmp(op1,"Temp"))
printf(" LD %s %d",op1,i-2);
else
printf(" LD %s",op1);
switch(ch)
{
case'+':if(!strcmp(op2,"Temp"))
printf(" AD %s %d",op2,i-1);
else
printf(" AD %s",op2);
push(temp);
printf(" ST Temp %d",i);
i=i+1;
break;
case'*':if(!strcmp(op2,"Temp"))
printf(" ML %s %d",op2,i-1);
else
printf(" ML %s",op2);
push(temp);
printf(" ST Temp %d",i);
i=i+1;
break;
case'-':if(!strcmp(op2,"Temp"))
printf(" SB %s %d",op2,i-1);
else
printf(" SB %s",op2);
push(temp);
printf(" ST Temp %d",i);
i=i+1;
break;
case'/':if(!strcmp(op2,"Temp"))
printf(" DV %s %d",op2,i-1);
else
printf(" DV %s",op2);
push(temp);
printf(" ST Temp %d",i);
i=i+1;
default:break;
}
}
Explanation / Answer
public final class stack
{
private int top;
private char item[30][7];
public stack clone()
{
stack varCopy = new stack();
varCopy.top = this.top;
varCopy.item = this.item;
return varCopy;
}
}
private struct stack s1;
private void push(char ele[])
{
s1.top = s1.top + 1;
strcpy(s1.item[s1.top],ele);
}
private int empty()
{
if (s1.top == -1)
{
return 1;
}
else
{
return 0;
}
}
private char x[7];
private char * pop()
{
if (empty())
{
printf(" invalid expression");
}
{
getch();
exit(0);
}
{
strcpy(x,s1.item[s1.top--]);
}
}
private int isoperator(char c)
{
switch (c)
{
case '+':
case '-':
case '/':
case '*':
return (1);
default :
return (0);
}
}
private void evaluate(char ch)
{
static int i = 1;
char temp[7] = {'T','e','m','p',''};
char op1[7],op2[7];
pop();
strcpy(op2,x);
pop();
strcpy(op1,x);
if (!strcmp(op1,"Temp"))
{
printf(" LD %s %d",op1,i - 2);
}
else
{
printf(" LD %s",op1);
}
switch (ch)
{
case'+':
if (!strcmp(op2,"Temp"))
{
printf(" AD %s %d",op2,i - 1);
}
else
{
printf(" AD %s",op2);
}
push(temp);
printf(" ST Temp %d",i);
i = i + 1;
break;
case'*':
if (!strcmp(op2,"Temp"))
{
printf(" ML %s %d",op2,i - 1);
}
else
{
printf(" ML %s",op2);
}
push(temp);
printf(" ST Temp %d",i);
i = i + 1;
break;
case'-':
if (!strcmp(op2,"Temp"))
{
printf(" SB %s %d",op2,i - 1);
}
else
{
printf(" SB %s",op2);
}
push(temp);
printf(" ST Temp %d",i);
i = i + 1;
break;
case'/':
if (!strcmp(op2,"Temp"))
{
printf(" DV %s %d",op2,i - 1);
}
else
{
printf(" DV %s",op2);
}
push(temp);
printf(" ST Temp %d",i);
i = i + 1;
default:
break;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.