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

📄 2189.cpp

📁 这是哈尔滨工业大学acmOJ的源代码
💻 CPP
字号:
/*  This Code is Submitted by wywcgs for Problem 2189 on 2006-04-04 at 11:06:41 */ 
#include <cstdio>
#include <cctype>

const int MAX = 1024000;

int var[MAX], vt;

int com(int, char, int);
void vpop(char);

int main()
{
	char stack[MAX], ch;
	
	while((ch = getchar()) != EOF) {
		ungetc(ch, stdin);
		int st = vt = 0; stack[st++] = '(';
		char pc = '(';
		while(true) {
			ch = getchar();
			if(ch == '\n' || ch == ')') {
				while(stack[--st] != '(') vpop(stack[st]);
				if(ch == '\n') break;
			} else if(ch == '(') stack[st++] = '(';
			else if(isdigit(ch)) {
				ungetc(ch, stdin);
				scanf("%d", &var[vt++]);
			} else {
				if(pc == '(') var[vt++] = 0;
				while(stack[st-1] != '(') vpop(stack[--st]);
				stack[st++] = ch;
			}
			pc = ch;
		}
		printf("%d\n", var[0]);
	}
	
	return 0;
}

int com(int a1, char op, int a2)
{
	switch(op) {
	case '+': return a1+a2;
	default: return a1-a2;
	}
}
void vpop(char op)
{
	var[vt-2] = com(var[vt-2], op, var[vt-1]);
	vt--;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -