定义一个Runner类,包含私有成员姓名和跑步竞赛成绩(用时);
定义一个swap函数可以交换2个Runner对象;
main函数完成:根据人数n,读入n个跑步者的姓名和成绩存入对象数组,然后将跑步用时最少的Runner对象和0元素交换,跑步用时最多的Runner对象和最后一个元素交换。其他Runner对象的顺序不变。
输出交换后的n个跑步者信息。
输入格式:
输入n(<100),随后n行分别输入跑步者的名字和跑步用时(中间用空格隔开。)
输出格式:
输出交换后的n个跑步者信息。
输入样例:
5
张田 11.5
李岚 12.3
王海 10.5
张涛 13
陆锋 8.5
输出样例:
陆锋 8.5
李岚 12.3
王海 10.5
张田 11.5
张涛 13
--------------------------------------------------------------------------------------------------------------------------------
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
class Runner
{
private:
string Name;
double Cost;
public:
void setname(const string& name)
{
Name = name;
}
void setcost(const double& cost)
{
Cost = cost;
}
string getname() const
{
return Name;
}
double getcost() const
{
return Cost;
}
};
int main()
{
int n;
cin >> n;
Runner s[100];
for (int i = 0; i < n; i++)
{
string name;
double cost;
cin >> name >> cost;
s[i].setname(name);
s[i].setcost(cost);
}
double min = s[0].getcost();
int mi = 0;
for (int i = 0; i < n; i++)
{
if (min > s[i].getcost())
{
min = s[i].getcost();
mi = i;
}
}
swap(s[mi], s[0]);
//需要替换后再定义max不然会答案错误
double max = s[0].getcost();
int ma = 0;
for (int i = 0; i < n; i++)
{
if (max < s[i].getcost())
{
max = s[i].getcost();
ma = i;
}
}
swap(s[ma], s[n-1]);
for (int i = 0; i < n; i++)
{
cout << s[i].getname() << " " << s[i].getcost() << endl;
}
return 0;
}
可以使用vector函数录入数据,更加便捷好用。(暂时没学)
如果出现两个相同的cost,答案会错误。(但是pta没有这个测试点。)