初步实现:
#include <iostream>
#include <fstream>
#include <sstream>
#include <set>
#include <string>
using namespace std;
/*class Resource
{
int m_id;
int m_score;
};*/
int main()
{
char buf[20]; //用来把每一位学生的数据流到类中
int StuCount=0;
int id;
int score;
float ratio_lower60;
float ratio_greater85_lower100;
multiset<int> mymultiset;
int StuRec1=0; // 统计大于60分人数
int StuRec2=0;
ifstream fin("d:\\score.txt");
if(!fin)
{
cout<<"打开文件失败"<<endl;
}
while(fin.getline(buf,20))
{
StuCount++;
istringstream is(buf);
is>> id;
is>>score;
mymultiset.insert(score);
}
/*for(multiset<int>::iterator it = mymultiset.begin();it!=mymultiset.end();it++)
{
}*/
multiset<int>::iterator it1 = mymultiset.lower_bound(60); //it获得指向第一个大于60的元素的位置
while(it1!=mymultiset.end())
{
StuRec1++;
it1++;
}
StuRec1=StuCount-StuRec1;
ratio_lower60=(float)StuRec1/StuCount;
multiset<int>::iterator it2 = mymultiset.lower_bound(85);
while(it2!=mymultiset.end())
{
StuRec2++;
it2++;
}
ratio_greater85_lower100=(float)StuRec2/StuCount;
cout<<"成绩小于60分的学生所占比例:"<<ratio_lower60<<endl;
cout<<"成绩大于等于85分小于等于100分的学生所占比例:"<<ratio_greater85_lower100<<endl;
system("pause");
return 0;
}