#include<iostream>
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<string.h>
using namespace std;
int main()
{
char tmp[15];
char str[15], csf[15] = { "E" };
int ssm = 0, i, j, v, k, pos = 0, a;
char pt[6][5][4] = { "" , "i" , "+" , "*" , "/",
"E", "TX", "n" , "n" , "n",
"X", "n" , "TX", "n" , "" ,
"T", "VY", "n" , "n" , "n",
"Y", "n" , "" , "VY", "" ,
"V", "i" , "n" , "n" , "n" };
cout << "\n Enter An Expression: " << endl;
cin >> str;
while (str[ssm] != '/')
{
pos = 0;
while (csf[pos] != 'E' &&
csf[pos] != 'X' &&
csf[pos] != 'T' &&
csf[pos] != 'Y' &&
csf[pos] != 'V' && csf[pos] != '\0')
pos++;
if (csf[pos] == '\0')
break;
for (i = 1; i<6; i++)
{
if (csf[pos] == pt[i][0][0])
break;
}
for (j = 1; j<5; j++)
{
if (str[ssm] == pt[0][j][0])
break;
}
if (strcmp(pt[i][j], "n") == 0)
{
cout << "\n Null Value: " << endl;
cout << pt[i][j];
exit(0);
}
for (k = 0; k<pos; k++)
tmp[k] = csf[k];
tmp[k] = '\0';
strcat_s(tmp, pt[i][j]);
int l = strlen(tmp);
k = l;
for (a = pos + 1; csf[a] != '\0'; a++, k++)
tmp[k] = csf[a];
strcpy_s(csf, tmp);
}
strcat_s(csf, "/");
if (strcmp(csf, str) == 0)
{
cout << "\t csf" << csf;
cout << "\tstr" << str;
cout << "\n Valid Expression: " << endl;
}
else
{
cout << "\n Invalid Expression:" << endl;
}
_getch();
return 0;
}
CiNpbmNsdWRlPGlvc3RyZWFtPgojaW5jbHVkZTxzdGRpby5oPgojaW5jbHVkZTxjb25pby5oPgojaW5jbHVkZTxzdGRsaWIuaD4KI2luY2x1ZGU8c3RyaW5nLmg+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgppbnQgbWFpbigpCnsKCWNoYXIgdG1wWzE1XTsKCWNoYXIgc3RyWzE1XSwgY3NmWzE1XSA9IHsgIkUiIH07CglpbnQgc3NtID0gMCwgaSwgaiwgdiwgaywgcG9zID0gMCwgYTsKCQoKCWNoYXIgcHRbNl1bNV1bNF0gPSB7ICIiICwgImkiICwgIisiICwgIioiICwgIi8iLAoJCSJFIiwgIlRYIiwgIm4iICwgIm4iICwgIm4iLAoJCSJYIiwgIm4iICwgIlRYIiwgIm4iICwgIiIgLAoJCSJUIiwgIlZZIiwgIm4iICwgIm4iICwgIm4iLAoJCSJZIiwgIm4iICwgIiIgICwgIlZZIiwgIiIgLAoJCSJWIiwgImkiICwgIm4iICwgIm4iICwgIm4iIH07Cgljb3V0IDw8ICJcbiBFbnRlciBBbiBFeHByZXNzaW9uOiAiIDw8IGVuZGw7CgljaW4gPj4gc3RyOwoKCXdoaWxlIChzdHJbc3NtXSAhPSAnLycpCgl7CgkJcG9zID0gMDsKCQl3aGlsZSAoY3NmW3Bvc10gIT0gJ0UnICYmCgkJCWNzZltwb3NdICE9ICdYJyAmJgoJCQljc2ZbcG9zXSAhPSAnVCcgJiYKCQkJY3NmW3Bvc10gIT0gJ1knICYmCgkJCWNzZltwb3NdICE9ICdWJyAmJiBjc2ZbcG9zXSAhPSAnXDAnKQoJCQlwb3MrKzsKCQlpZiAoY3NmW3Bvc10gPT0gJ1wwJykKCQkJYnJlYWs7CgoJCWZvciAoaSA9IDE7IGk8NjsgaSsrKQoJCXsKCQkJaWYgKGNzZltwb3NdID09IHB0W2ldWzBdWzBdKQoJCQkJYnJlYWs7CgkJfQoJCWZvciAoaiA9IDE7IGo8NTsgaisrKQoJCXsKCQkJaWYgKHN0cltzc21dID09IHB0WzBdW2pdWzBdKQoJCQkJYnJlYWs7CgkJfQoJCWlmIChzdHJjbXAocHRbaV1bal0sICJuIikgPT0gMCkKCQl7CgkJCWNvdXQgPDwgIlxuIE51bGwgVmFsdWU6ICIgPDwgZW5kbDsKCQkJY291dCA8PCBwdFtpXVtqXTsKCQkJZXhpdCgwKTsKCQl9CgoJCWZvciAoayA9IDA7IGs8cG9zOyBrKyspCgkJCXRtcFtrXSA9IGNzZltrXTsKCQl0bXBba10gPSAnXDAnOwoJCXN0cmNhdF9zKHRtcCwgcHRbaV1bal0pOwoKCQlpbnQgbCA9IHN0cmxlbih0bXApOwoJCWsgPSBsOwoKCQlmb3IgKGEgPSBwb3MgKyAxOyBjc2ZbYV0gIT0gJ1wwJzsgYSsrLCBrKyspCgkJCXRtcFtrXSA9IGNzZlthXTsKCQlzdHJjcHlfcyhjc2YsIHRtcCk7Cgl9CgoKCXN0cmNhdF9zKGNzZiwgIi8iKTsKCWlmIChzdHJjbXAoY3NmLCBzdHIpID09IDApCgl7CgkJY291dCA8PCAiXHQgY3NmIiA8PCBjc2Y7CgoJCWNvdXQgPDwgIlx0c3RyIiA8PCBzdHI7CgoJCWNvdXQgPDwgIlxuIFZhbGlkIEV4cHJlc3Npb246ICIgPDwgZW5kbDsKCgoJfQoKCWVsc2UKCXsKCQljb3V0IDw8ICJcbiBJbnZhbGlkIEV4cHJlc3Npb246IiA8PCBlbmRsOwoKCX0KCgoJX2dldGNoKCk7CglyZXR1cm4gMDsKfQ==