📄 1244.cpp
字号:
/* This Code is Submitted by wywcgs for Problem 1244 on 2006-03-02 at 17:12:06 */
#include <cstdio>
#include <cctype>
#include <algorithm>
using namespace std;
const int MAX = 26;
bool used[MAX];
int var[MAX];
char line[256] = "+";
void skip(int& p) { while(line[p] == ' ') p++; }
int read(int&);
int main()
{
int i;
while(gets(line+1) != NULL) {
bool white = true;
for(i = 1; line[i] != 0 && white; i++)
if(line[i] != ' ') white = false;
if(white || i == 1) break;
memset(used, false, sizeof(used));
for(i = 0; i < MAX; i++) var[i] = i+1;
int value = 0, pos = 0;
while(line[pos] != 0) {
int sgn = (line[pos++] == '+') ? 1 : -1;
value += sgn * read(pos);
}
printf("Expression: %s\n", line+1);
printf(" value = %d\n", value);
for(i = 0; i < MAX; i++)
if(used[i]) printf(" %c = %d\n", i+'a', var[i]);
}
return 0;
}
int read(int& p)
{
int cv = 0;
skip(p);
if(!isalpha(line[p])) { cv = (line[p] == '+') ? 1 : -1; p += 2; }
skip(p);
int o = line[p]-'a';
used[o] = true; var[o] += cv;
int rv = var[o];
skip(++p);
if(line[p] == '+' && line[p+1] == '+') { p += 2; var[o]++; }
else if(line[p] == '-' && line[p+1] == '-') { p += 2; var[o]--; }
skip(p);
return rv;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -