📄 9-6.cpp
字号:
#include<iostream>
#include<vector>
#include<list>
#include<string>
#include<algorithm>
#include<iomanip>
#include<iterator>
class Student_info
{
public:
Student_info();
Student_info(std::istream&);
std::string name() const
{
return n;
}
double average() const
{
return (midterm+final)/2;
}
std::istream& read(std::istream&);
private:
std::string n;
double midterm,final;
};
Student_info::Student_info():midterm(0),final(0)
{
}
std::istream& Student_info::read(std::istream& in)
{
in>>n>>midterm>>final;
return in;
}
Student_info::Student_info(std::istream& is)
{
read(is);
}
bool compare(const Student_info& a,const Student_info& b)
{
return a.name()<b.name();
}
char estimate(double a)
{
return a>60?'F':'P';
}
void split(std::list<Student_info>& v)
{
for(std::list<Student_info>::iterator i=++v.begin();i!=v.end();++i)
if(i->average()>60)
{
v.push_front(*i);
i=v.erase(i);
}
}
int main()
{
std::list<Student_info> students;
Student_info record;
std::string::size_type maxlen=0;
while(record.read(std::cin))
{
maxlen=std::_MAX(maxlen,record.name().size());
students.push_back(record);
}
//std::sort(students.begin(),students.end(),compare);
std::streamsize prec=std::cout.precision();
for(std::list<Student_info>::const_iterator i=students.begin();
i!=students.end();++i)
std::cout<<i->name()<<std::string(maxlen-i->name().size()+4,' ')
<<std::setprecision(4)<<estimate(i->average())
<<std::setprecision(prec)<<std::endl;
split(students);
std::cout<<std::endl<<std::endl;
for(i=students.begin();i!=students.end();++i)
std::cout<<i->name()<<std::string(maxlen-i->name().size()+4,' ')
<<std::setprecision(4)<<estimate(i->average())
<<std::setprecision(prec)<<std::endl;
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -