#include <iostream>
using namespace std;
#include<stdio.h>
int output1;
int strToInt(char * s)
{
int num=0,i=0;
for(int i=0;s[i];i++)
{
num = num*10 + s[i]-'0';
}
return num;
}
void parseExp(char * exp,int *a,int *b,int *c,char *op,int *missing)
{
int p=0;
int order=0;
int temp=0;
*a = -1;
*b = -1;
*c = -1;
for (int i = 0; exp[i] ; ++i)
{
if( (exp[i]>='0' && exp[i]<='9') )
{
temp=0;
while( (exp[i]>='0' && exp[i]<='9') )
{
temp = temp * 10 + exp[i]-'0';
i++;
}
if (order==0)
{
*a = temp;
}
else if (order==1)
{
*b= temp;
}
else
{
*c = temp ;
}
i--;
}
else if (exp[i]=='X')
{
*missing = order ;
}
else
{
if (order==0)
{
*op = exp[i];
}
order++;
}
}
printf("%s %d %d %d %c %d\n",exp,*a,*b,*c,*op,*missing );
}
int performOp(int a,int b,char op)
{
switch(op)
{
case '+' : return a+b;
case '-' : return a-b ;
case '/' : return a/b;
case '*' : return a*b;
}
}
char invertOp(char op)
{
switch(op)
{
case '+' : return '-';
case '-' : return '+' ;
case '*' : return '/';
case '/' : return '*' ;
}
}
void arithmetic(char *input1)
{
int a,b,c;
char op;
int missing;
parseExp(input1,&a,&b,&c,&op,&missing);
char op2 = invertOp(op);
if(missing==0)
{
output1 = performOp(c,b,op2);
}
else if (missing==1)
{
if(op=='/' || op=='-')
{
output1 =performOp(a,c,op);
}
else
{
output1 =performOp(c,a,op2);
}
}
else
{
output1 = performOp(a,b,op);
}
// output1 = 0;
}
int main()
{
// your code goes here
char str[100]="1+X=3";
arithmetic(str);
printf("%d",output1);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCiNpbmNsdWRlPHN0ZGlvLmg+CgppbnQgb3V0cHV0MTsKCgppbnQgc3RyVG9JbnQoY2hhciAqIHMpCnsKCWludCBudW09MCxpPTA7CgkKCWZvcihpbnQgaT0wO3NbaV07aSsrKQoJewoJCW51bSA9IG51bSoxMCArIHNbaV0tJzAnOwoJCQoJfQoJCgkKCXJldHVybiBudW07Cn0KCnZvaWQgcGFyc2VFeHAoY2hhciAqIGV4cCxpbnQgKmEsaW50ICpiLGludCAqYyxjaGFyICpvcCxpbnQgKm1pc3NpbmcpCnsKCWludCBwPTA7CglpbnQgb3JkZXI9MDsKCWludCB0ZW1wPTA7CgoJKmEgPSAtMTsKCSpiID0gLTE7CgkqYyAgPSAtMTsKCglmb3IgKGludCBpID0gMDsgZXhwW2ldIDsgKytpKQoJewoJCWlmKCAoZXhwW2ldPj0nMCcgJiYgZXhwW2ldPD0nOScpICkKCQl7CgkJCXRlbXA9MDsKCQkJd2hpbGUoIChleHBbaV0+PScwJyAmJiBleHBbaV08PSc5JykgKQoJCQl7CgkJCQl0ZW1wID0gdGVtcCAqIDEwICsgZXhwW2ldLScwJzsKCQkJCWkrKzsKCQkJfQoJCQlpZiAob3JkZXI9PTApCgkJCXsKCQkJCSphID0gdGVtcDsKCQkJfQoJCQllbHNlIGlmIChvcmRlcj09MSkKCQkJewoJCQkJCQoJCQkJKmI9IHRlbXA7CQoJCQl9CgkJCWVsc2UKCQkJewoJCQkJKmMgPSAgdGVtcCA7CgkJCX0KCQkJaS0tOwoKCQl9CgkJZWxzZSBpZiAoZXhwW2ldPT0nWCcpCgkJewoJCQkqbWlzc2luZyA9IG9yZGVyIDsgCgkJfQoJCWVsc2UKCQl7CgkJCWlmIChvcmRlcj09MCkKCQkJewoJCQkJKm9wID0gZXhwW2ldOwoJCQl9CgkJCW9yZGVyKys7CgoKCQl9CgoJfQoKCglwcmludGYoIiVzICVkICVkICVkICVjICVkXG4iLGV4cCwqYSwqYiwqYywqb3AsKm1pc3NpbmcgKTsKCQoJCgkKCQp9CgppbnQgcGVyZm9ybU9wKGludCBhLGludCBiLGNoYXIgb3ApCnsKCXN3aXRjaChvcCkKCXsKCQljYXNlICcrJyA6IHJldHVybiBhK2I7CgkJY2FzZSAnLScgOiByZXR1cm4gYS1iIDsKCQljYXNlICcvJyA6IHJldHVybiBhL2I7CgkJY2FzZSAnKicgOiByZXR1cm4gYSpiOwoJfQp9CgoKY2hhciBpbnZlcnRPcChjaGFyIG9wKQp7Cglzd2l0Y2gob3ApCgl7CgkJY2FzZSAnKycgOiByZXR1cm4gJy0nOwoJCWNhc2UgJy0nIDogcmV0dXJuICcrJyA7CgkJY2FzZSAnKicgOiByZXR1cm4gJy8nOwoJCWNhc2UgJy8nIDogcmV0dXJuICcqJyA7CgogCX0KCQp9CgoKdm9pZCBhcml0aG1ldGljKGNoYXIgKmlucHV0MSkKewoJaW50IGEsYixjOwoJY2hhciBvcDsKCWludCBtaXNzaW5nOwoJcGFyc2VFeHAoaW5wdXQxLCZhLCZiLCZjLCZvcCwmbWlzc2luZyk7CgoJY2hhciBvcDIgPSBpbnZlcnRPcChvcCk7CgkKCWlmKG1pc3Npbmc9PTApCgl7CgkJb3V0cHV0MSA9IHBlcmZvcm1PcChjLGIsb3AyKTsKCX0KCWVsc2UgaWYgKG1pc3Npbmc9PTEpCgl7CgkJaWYob3A9PScvJyB8fCBvcD09Jy0nKQoJCXsKCQkJb3V0cHV0MSA9cGVyZm9ybU9wKGEsYyxvcCk7CgkJCQoJCX0KCQllbHNlCgkJewoJCQlvdXRwdXQxID1wZXJmb3JtT3AoYyxhLG9wMik7CgkJCQoJCX0KCQkKCX0KCWVsc2UgCgl7CgkJb3V0cHV0MSA9IHBlcmZvcm1PcChhLGIsb3ApOwoKCX0KCgkvLyBvdXRwdXQxID0gMDsKfQoKCgoKCmludCBtYWluKCkgCnsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCWNoYXIgc3RyWzEwMF09IjErWD0zIjsKCWFyaXRobWV0aWMoc3RyKTsKCXByaW50ZigiJWQiLG91dHB1dDEpOwoJCgkKCXJldHVybiAwOwp9