定义一个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 <vector>
#include <algorithm>
#include <string>
using namespace std;
class Runner {
public:
string name;
double time;
Runner(string n, double t) : name(n), time(t) {}
};
int main()
{
int n;
cin >> n;
vector<Runner> runners;
for (int i = 0; i < n; i++)
{
string name;
double time;
cin >> name >> time;
Runner newRunner(name, time);
runners.push_back(newRunner);
}
int max = runners[0].time;
int l = 0;
for(int i = 1; i < n; i++)
{
if(max > runners[i].time)
{
max = runners[i].time;
l = i;
}
}
swap(runners[0], runners[l]);
int min = runners[1].time;
int p = 0;
for(int i = 2; i < n; i++)
{
if(runners[i].time > min)
{
min = runners[i].time;
p = i;
}
}
swap(runners[p], runners[n - 1]);
for(int i = 0; i < n; i++)
{
cout << runners[i].name << " " << runners[i].time << endl;
}
}