7-1 交换对象
分数 25
全屏浏览
切换布局
作者 刘利
单位 惠州学院
定义一个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
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
栈限制
8192 KB
#include<iostream>
using namespace std;
class Runner
{
string name;
double score;
public:
Runner(string name,double score)
{
this->name = name;
this->score = score;
}
void print()
{
cout<<name<<' '<<score<<endl;
}
void swap(Runner *c1,Runner *c2)
{
Runner *c3;
c3 = c1;
c1 = c2;
c2 = c3;
}
Runner(const Runner &a)
{
this->name = a.name;
this->score = a.score;
}
double getscore()
{
return score;
}
};
int main()
{
int n;
cin>>n;
Runner *a[n];
string name;
double score;
for(int i=0;i<n;i++)
{
cin>>name>>score;
a[i]=new Runner(name,score);
}
int min=0;
double min_score=a[0]->getscore();
for(int i=1;i<n;i++)
{
if(a[i]->getscore()<min_score)
{
min_score=a[i]->getscore();
min = i;
}
}
swap(a[min],a[0]);
int max=0;
double max_score=a[0]->getscore();
for(int i=1;i<n;i++)
{
if(a[i]->getscore()>max_score)
{
max_score=a[i]->getscore();
max = i;
}
}
swap(a[max],a[n-1]);
for(int i=0;i<n;i++)
{
a[i]->print();
}
}