请你写一个程序来分析食堂的流水记录,通过对账来评选出“数学食堂”。
输入格式
前三行是食堂的名字s和流水记录数n,后面按照前三行食堂的顺序输入流水账单。
流水账单由五项组成:米饭重量 荤菜单价 素菜单价 总价 阿姨的名字。
输出格式
第一行输出“数学食堂”的名称和错误率(百分数,保留3位小数)。如果出现平局,则按输入的顺序输出第一家食堂。
余下行依次输出该食堂中算错钱的阿姨的名字,一行一个名字,按流水单的顺序输出。
样例输入
QF 5
XY 3
LS 4
2 2.5 5.5 8.4 aa
1 1.5 6 7.9 bb
2 1.5 6.5 8.4 cc
1 2.5 7 9.7 dd
3 2.5 8.5 11.6 ee
2 2.5 6.5 9.4 ff
2 3 5.5 12.9 gg
2 1.5 6.5 8.4 hh
2 1.5 5.5 7.4 ii
2 1.5 6 7.9 jj
1 2.5 5.5 8.4 kk
1 2 8 10.2 ll
样例输出content_copy
QF 20.000%
bb
提示/说明
在商大食堂中,一两饭0.2元,二两饭0.4元。
#include<algorithm>
#include <iostream>
#include<string>
#include<math.h>
#include<vector>
using namespace std;
int main(){
vector<vector<string>>cuo;
float c[3];
string ming[3];
for(int i=0;i<3;i++)
{
cin>>ming[i]>>c[i];
}
string ayi;
for(int i=0;i<3;i++)
{
vector<string>cuo2;
for(int j=0;j<c[i];j++)
{
float weight,rou,su,sum;
cin>>weight>>rou>>su>>sum>>ayi;
if(fabs((0.2*weight+rou+su)-sum)>1e-6)
{
cuo2.push_back(ayi);
}
}
cuo.push_back(cuo2);//二维vector数组 初始为空所以不能在第二层循环内用cuo[i]
cuo2.clear();
}
float minn=1;
int shitang=0;
for(int i=0;i<3;i++)
{
if(cuo[i].size()/c[i]<minn)
{
minn=cuo[i].size()/c[i];
shitang=i;
}
}
printf("%s %.3lf%%\n",ming[shitang].c_str(),minn*100);
for(auto it=cuo[shitang].begin();it!=cuo[shitang].end();it++)
{
cout<<*it<<endl;
}
}