记录编号 |
550176 |
评测结果 |
AAAAA |
题目名称 |
[NOIP 2000PJ]计算器的改良 |
最终得分 |
100 |
用户昵称 |
锝镆氪锂铽 |
是否通过 |
通过 |
代码语言 |
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){;}