//注意一个问题就行了,就是题目里面没说运算符和变量必须在一起 WA了一次
//注意一个问题就行了,就是题目里面没说运算符和变量必须在一起
#include<iostream>
#include<cstdio>
#include<cstring>
#include<memory>
#include<queue>
using namespace std;
///
int addVaribles[26];
char expression[120];
char tempexp[120];
char cacuex[120];
bool IsExist[26];
int exp(int len)
{
int i, j, k;
int sum = 0;
i = 0;
//找第一个操作数
while (i < len)
{
if (expression[i] <= 'z' && expression[i] >= 'a')
{
sum = expression[i] - 'a' + 1;
break;
}
i++;
}
i++;
while (i < len)
{
if (expression[i] == '+')
{
j = i + 1;
while (j < len)
{
if (expression[j] <= 'z' && expression[j] >= 'a')
{
sum += expression[j] - 'a' + 1;
i = j;
break;
}
j++;
}
}
if (expression[i] == '-')
{
j = i + 1;
while (j < len)
{
if (expression[j] <= 'z' && expression[j] >= 'a')
{
sum -= expression[j] - 'a' + 1;
i = j;
break;
}
j++;
}
}
i++;
}
return sum;
}
int main()
{
///
int i, j, k;
int len;
while (gets(expression) != NULL)
{
memset(IsExist, 0, sizeof(IsExist));
memcpy(tempexp, expression, 120);
memset(addVaribles, 0, sizeof(addVaribles));
len = strlen(expression);
for (i = 0; i < 26; i++)
{
addVaribles[i] = i + 1;
}
//调整输入字符
i = 0;
while (i < len)
{
if (expression[i] == ' ')
{
i++;
continue;
}
if (expression[i] <= 'z' && expression[i] >= 'a')
{
IsExist[expression[i] - 'a'] = true;
//前缀
j = i - 1;
while (j >= 0)
{
if (expression[j] == ' ')
{
j--;
continue;
}
k = j - 1;
if (k < 0)
break;
if (expression[k] == expression[j])
{
if (expression[j] == '+')
{
addVaribles[expression[i] - 'a']++;
expression[i] += 1;
expression[j] = ' ';
expression[k] = ' ';
}
else if(expression[j] == '-')
{
addVaribles[expression[i] - 'a']--;
expression[i] -= 1;
expression[j] = ' ';
expression[k] = ' ';
}
}
break;
}
//后缀
j = i + 1;
while (j < len)
{
if (expression[j] == ' ')
{
j++;
continue;
}
k = j + 1;
if (k >= len)
break;
if (expression[j] == expression[k])
{
if (expression[j] == '+')
{
addVaribles[expression[i] - 'a']++;
expression[j] = ' ';
expression[k] = ' ';
}
else if(expression[j] == '-')
{
addVaribles[expression[i] - 'a']--;
expression[j] = ' ';
expression[k] = ' ';
}
}
break;
}
}// if...
i++;
}
int ans = exp(len);
printf("Expression: %s\n", tempexp);
printf(" value = %d\n", ans);
for (i = 0; i < 26; i++)
{
if (IsExist[i])
{
printf(" %c = %d\n", 'a' + i, addVaribles[i]);
}
}
// printf("\n");
}
return 0;
}