1、求加权平均数,P和N要被忽略。
2、注意不要除零。
3、浮点数要判定相等的话不能直接比较,必须看差值的绝对值是否小于一个很小的值。
4、注意最后答案保留两位小数。
#include<cstdio>
#include<cmath>
using namespace std;
int main(){
//freopen("4802.in","r",stdin);
int n,temp,sum;
char s[10];
double ans,score;
while(scanf("%d",&n)==1){
ans=0;sum=0;
for(int i=0;i<n;i++){
scanf("%d",&temp);
scanf("%s",s);
if(s[0]=='A'){
if(s[1]=='-') score=3.7;
else score=4.0;
}
if(s[0]=='B'){
if(s[1]=='+') score=3.3;
else if(s[1]=='-') score=2.7;
else score=3.0;
}
if(s[0]=='C'){
if(s[1]=='+') score=2.3;
else if(s[1]=='-') score=1.7;
else score=2.0;
}
if(s[0]=='D'){
if(s[1]=='-') score=1.0;
else score=1.3;
}
if(s[0]=='F'){
score=0;
}
if(s[0]!='P'&&s[0]!='N'){
ans+=temp*score;
sum+=temp;
}
}
if(fabs(sum-0)>1e-9)
ans/=sum;
if(fabs(ans-0)<1e-9)
printf("0.00\n");
else
printf("%.2lf\n",ans);
}
return 0;
}