锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
闂鎻忚堪濡備笅錛?br /> 涓寮濮嬬粰瀹氫竴浜涘彉閲忎互鍙?qiáng)鐩稿搴旂殑鍊鹼紝浠?%%緇撳熬錛屾渶鍚庣粰鍑轟竴浜涜〃杈懼紡鐨勫鹼紝鐒舵垜浠眰琛ㄨ揪寮忕殑鍊兼槸澶氬皯錛屽艦寮忓錛?br /> aa = 34
bb = 45
cc = 56
%%%
aa + bb * cc
aa + bb - cc
-------------------------------------------------------------------------------------------------------------------
#include<iostream>
2
#include<sstream>
3
#include<string>
4
#include<iterator>
5
#include<map>
6
#include<vector>
7
using namespace std;
8
string input;
9
map<string,int> my;
10
map<char,int> f;
11
vector<int> num;
12
vector<int> op;
13
void init()
14
{
15
f['+']=1;
16
f['-']=2;
17
f['*']=3;
18
f['/']=4;
19
}
20
string predeal(string s)
21
{
22
int len=s.size();
23
for(int i=0;i<len;i++)
24
if(s[i]=='=')
25
s[i]=' ';
26
return s;
27
}
28
string prevdeal2(string s)
29
{
30
int len=s.size();
31
for(int i=0;i<len;i++)
32
if(!isalnum(s[i])&&s[i]!=' ') //濡傛灉涓嶆槸瀛楃涓斾笉鏄┖鏍?/span>
33
{
34
s[i]=f[s[i]]+'0';
35
}
36
return s;
37
}
38
int main()
39
{
40
string s;
41
while(getline(cin,s)&&s!="%%%")
42
{
43
//strlwr((char *)s.c_str());
44
input=predeal(s);
45
istringstream in(input);
46
string op1; //鎿嶄綔鏁?
47
int num1; //鏁板?/span>
48
in>>op1>>num1;
49
my[op1]=num1;
50
}
51
map<string,int>::iterator it;
52
init();
53
while(getline(cin,s))
54
{
55
num.clear();
56
op.clear();
57
string deal=prevdeal2(s);
58
string ans;
59
int len=s.size();
60
istringstream in(deal);
61
in>>ans;
62
num.push_back(my[ans]);
63
//鎺ョ潃鍐嶈鍏ヤ竴涓瓧絎﹀拰瀛楃涓?nbsp;
64
int op1;
65
string ans2;
66
while(in>>op1>>ans2)
67
{
68
if(op1==3)
69
{
70
num.back()*=my[ans2];
71
}
72
else if(op1==4)
73
{
74
num.back()*=my[ans2];
75
}
76
else if(op1==1||op1==2)
77
{
78
op.push_back(op1);
79
num.push_back(my[ans2]);
80
}
81
}
82
int res=num[0];
83
for(int i=0;i<op.size();i++)
84
{
85
if(op[i]==1)
86
{
87
res+=num[i+1];
88
}
89
else if(op[i]==2)
90
{
91
res-=num[i+1];
92
}
93
}
94
cout<<"the ans is: "<<res<<endl;
95
}
96
system("pause");
97
}
98
]]>
]]>