记录编号 550176 评测结果 AAAAA
题目名称 [NOIP 2000PJ]计算器的改良 最终得分 100
用户昵称 Gravatar锝镆氪锂铽 是否通过 通过
代码语言 C++ 运行时间 0.000 s
提交时间 2020-03-03 22:49:13 内存使用 0.00 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<stack>
#include<cmath>
using namespace std;

stack<int>a;
stack<int>b;
int com(){
	freopen("computer.in","r",stdin);
	freopen("computer.out","w",stdout);
	a.push(0);b.push(0);
	char st[101],xx;
	bool ope=true,duan=true;
	int num=0,upp=0,loc=0;
	double ans;
	scanf("%s",st);
	st[strlen(st)]='+';
	for(int i=0;i<strlen(st);i++){
		if(st[i]=='-'&&duan!=false){
			if(i!=0&&st[i-1]>='0'&&st[i-1]<='9'){
				for(int j=i-1;j>=loc;j--){
					num+=((st[j]-'0')*pow(10,upp));
					upp++;
				}
				int o=a.top();
				a.pop();
				o+=(ope?num:(0-num));
				a.push(o);
			}
			else if(i!=0&&st[i-1]>='a'&&st[i-1]<='z'){
				xx=st[i-1];
				for(int j=i-2;j>=loc;j--){
					num+=((st[j]-'0')*pow(10,upp));
					upp++;
				}
				int o=b.top();
				b.pop();
				o+=(ope?num:(0-num));
				b.push(o);
			}
			ope=false;
			loc=i+1;
			continue;
		}
		if(st[i]=='+'&&duan!=false){
			if(i!=0&&st[i-1]>='0'&&st[i-1]<='9'){
				for(int j=i-1;j>=loc;j--){
					num+=((st[j]-'0')*pow(10,upp));
					upp++;
				}
				int o=a.top();
				a.pop();
				o+=(ope?num:(0-num));
				a.push(o);
			}
			else if(i!=0&&st[i-1]>='a'&&st[i-1]<='z'){
				xx=st[i-1];
				for(int j=i-2;j>=loc;j--){
					num+=((st[j]-'0')*pow(10,upp));
					upp++;
				}
				int o=b.top();
				b.pop();
				o+=(ope?num:(0-num));
				b.push(o);
			}
			ope=true;
			loc=i+1;
			continue;
		}
		if(st[i]=='-'&&duan==false){
			if(i!=0&&st[i-1]>='0'&&st[i-1]<='9'){
				for(int j=i-1;j>=loc;j--){
					num+=((st[j]-'0')*pow(10,upp));
					upp++;
				}
				int o=a.top();
				a.pop();
				o+=(ope?(0-num):num);
				a.push(o);
			}
			else if(i!=0&&st[i-1]>='a'&&st[i-1]<='z'){
				xx=st[i-1];
				for(int j=i-2;j>=loc;j--){
					num+=((st[j]-'0')*pow(10,upp));
					upp++;
				}
				int o=b.top();
				b.pop();
				o+=(ope?(0-num):num);
				b.push(o);
			}
			ope=false;
			loc=i+1;
			continue;
		}
		if(st[i]=='+'){
			if(i!=0&&st[i-1]>='0'&&st[i-1]<='9'){
				for(int j=i-1;j>=loc;j--){
					num+=((st[j]-'0')*pow(10,upp));
					upp++;
				}
				int o=a.top();
				a.pop();
				o+=(ope?(0-num):num);
				a.push(o);
			}
			else if(i!=0&&st[i-1]>='a'&&st[i-1]<='z'){
				xx=st[i-1];
				for(int j=i-2;j>=loc;j--){
					num+=((st[j]-'0')*pow(10,upp));
					upp++;
				}
				int o=b.top();
				b.pop();
				o+=(ope?(0-num):num);
				b.push(o);
			}
			ope=true;
			loc=i+1;
			continue;
		}
		if(st[i]=='='){
			if(i!=0&&st[i-1]>='0'&&st[i-1]<='9'){
				for(int j=i-1;j>=loc;j--){
					num+=((st[j]-'0')*pow(10,upp));
					upp++;
				}
				int o=a.top();
				a.pop();
				o+=(ope?num:(0-num));
				a.push(o);
			}
			else if(i!=0&&st[i-1]>='a'&&st[i-1]<='z'){
				xx=st[i-1];
				for(int j=i-2;j>=loc;j--){
					num+=((st[j]-'0')*pow(10,upp));
					upp++;
				}
				int o=b.top();
				b.pop();
				o+=(ope?num:(0-num));
				b.push(o);
			}
			ope=true;
			duan=false;
			loc=i+1;
			continue;
		}
		num=0;
		upp=0;
	}
	ans=(double)a.top()/(-b.top());
	if(ans==-0)
		ans=0;
	printf("%c=%0.3lf",xx,ans);
	return 0;
}

int lol=com();
int main(void){;}