64,654
社区成员
发帖
与我相关
我的任务
分享
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
class Student
{
public:
string name;
double avg;
};
vector<Student > students; //存放学生的信息
void Input()
{
ifstream in("abc.txt"); //文件可以用绝对地址
if( !in ) //如果找不到文件,就提醒
{
cout << "Can not find file abc.txt" <<endl;
return;
}
int numStu, numCourse;
in >> numStu >> numCourse;
for( int i=0; i<numStu; i++)
{
Student stu;
in >> stu.name;
double sum=0;
for( int j=0; j<numCourse; j++ )
{
double score;
in >> score;
sum += score;
}
stu.avg = sum/numCourse;
students.push_back( stu ); //存入数据
}
}
bool fun( Student a, Student b )
{
return a.avg>b.avg;
}
void Sort()
{
sort(students.begin(), students.end(), fun ); //使用STL algorithm,也可以使用下面自己写的
/*
//选择排序
int numStu = students.size();
for( int i=0; i<numStu; i++)
{
int max = i;
//找到最大的,已平均值为关键字比较
for( int j=i; j<numStu; j++)
{
if( students[j].avg > students[i].avg )
max=j;
}
if( max != i ) //交换
{
Student temp;
temp = students[i];
students[i] = students[max];
students[max] = temp;
}
}
*/
}
void Output()
{
ofstream out("result.txt");
for( int i=0; i<(int)students.size(); i++)
{
out << i+1 << " "<<students[i].name<<endl;
}
}
int main()
{
Input();
Sort();
Output();
}