求助

P1022 [NOIP2000 普及组] 计算器的改良

@[付_Ruby](/user/291608) 代码?
by wlxs2006 @ 2020-10-18 18:52:32


@[付_Ruby](/user/291608) 求助希望能给代码 ```cpp #include<bits/stdc++.h> using namespace std; int main() { char c; vector<int> sumx,sumn; int sum=0,neg=1,equal=0,undone=1; string a; cin >> a;//123->12 for(int i=0;i<a.size();i++) { if(islower(a[i])) c=a[i]; if(a[i]=='=') equal=1; if(a[i]=='-') neg=-1; if(a[i]=='+' || a[i]=='=') neg=1; if(isdigit(a[i])) { sum=sum*10+(a[i]-'0')*neg; if(isdigit(a[i+1])) undone=1; else undone=0; } if(islower(a[i]) && !isdigit(a[i-1])) sumx.push_back(1); if(!isdigit(a[i]) && sum!=0) sum=0; if(equal==0)//左边 { if(undone==0 && sum) { if(isdigit(a[i]) && islower(a[i+1])) sumx.push_back(sum);//是未知数前面的数字 if(isdigit(a[i]) && !islower(a[i+1])) sumn.push_back(-sum);//不是未知数前面的数字 } } else//右边 { if(undone==0 && sum) { if(isdigit(a[i]) && islower(a[i+1])) sumx.push_back(-sum);//是未知数前面的数字 if(isdigit(a[i]) && !islower(a[i+1])) sumn.push_back(sum);//不是未知数前面的数字 } } } int ts=0; for(int i=0;i<sumx.size();i++) ts+=sumx[i]; int tn=0; for(int i=0;i<sumn.size();i++) tn+=sumn[i]; double shang=double(tn)/ts; printf("%c=%.3lf",c,shang); return 0; } ``` 喏,答案。讲解: vector用于调试,不说了,islower函数判断字符是否为字母,isdigit函数判断字符是否为数字,不谢
by 起名字重要吗 @ 2020-10-18 18:55:29


|