⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1244.cpp

📁 哈尔滨工业大学ACM 竞赛网上在线试题集锦的源代码
💻 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 + -