类和对象-练习:实验二 7-1 成绩排名

编写一个学生类,包含学号(string)、姓名(string)和成绩(double)三个私有属性,以及设置姓名、学号和成绩值,获得成绩值,输出姓名、学号和成绩等的公有成员函数。根据输入的人数,定义学生类对象数组,并读入学生信息,然后按照成绩由高低顺序排序并输出。

输入格式:

第1行输入学生人数n(0<n<100),随后n行分别输入学生学号、姓名、成绩。

输出格式:

按成绩由高到低输出每个学生的信息

输入样例:

在这里给出一组输入。例如:

3
001 张东 78.5
002 李岚 88
003 肖天 76

输出样例:

在这里给出相应的输出。例如:

1 002 李岚 88
2 001 张东 78.5
3 003 肖天 76

-------------------------------------------------------------------------------------------------------------------------------- 

#include <iostream>
#include<string>
#include<algorithm>
using namespace std;
class xs
{
public:
	string getName() const
	{
		return m_Name;
	}
	string getID() const
	{
		return m_ID;
	}
	double getCj() const
	{
		return m_cj;
	}
	void setName(const string& Name)
	{
		m_Name = Name;
	}
	void setID(const string& ID)
	{
		m_ID = ID;
	}
	void setCj(const double& Cj)
	{
		m_cj = Cj;
	}
private:
	string m_Name;
	string m_ID;
	double m_cj;
};
int main()
{
	int n;
	cin >> n;
	xs s[100];
	for (int i = 0; i < n; i++)
	{
		string Name, ID;
		double Cj;
		cin >> ID >> Name >> Cj;
		s[i].setID(ID);
		s[i].setName(Name);
		s[i].setCj(Cj);
	}
	sort(s, s + n, [](const xs& a,const xs& b)->bool {
		return a.getCj() > b.getCj();
		});
	for (int i = 0; i < n; i++)
	{
		cout << i + 1 << " " << s[i].getID() << " " << s[i].getName() << " " << s[i].getCj() << endl;
	}
}

sort函数 :用于对对象数组进行排序

#include<algorithm>

 sort(s, s + n, [](const xs& a,const xs& b)->bool {
        return a.getCj() > b.getCj();
        });

A、其中s,s+n:s为数组名、s,s+n表示从数组的第一个元素到第n个元素之后的位置。

B、Lambda表达式[](const xs& a, const xs& b) -> bool { return a.getCj() > b.getCj(); }

1、Lambda表达式是一个匿名函数,可以在需要函数对象的地方直接定义和使用。

2、这个Lambda表达式接受两个引用参数ab,它们都是类型为xs的对象。

3、const xs&表示参数是对xs对象的常量引用,这样可以防止在Lambda表达式体中修改传入的对象。

4、表达式a.getCj() > b.getCj()定义了排序的准则:如果a对象的成绩大于b对象的成绩,则认为a应该排在b之前。

5、-> bool指定了Lambda表达式的返回类型,这里是布尔值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值