某大学开田径运动会,现有12名选手参加100米比赛,对应的运动员号及成绩如表所示,请按照成绩排名并输出,要求每一行输出名次、运动员号及成绩。
代码实现:
#include <iostream>
#include <iomanip>
#include <string>
using namespace std;
class Sport
{
public:
Sport() { }
Sport(string n,double g)
{
num=n;
grade=g;
}
string num;
double grade;
};
void Order(Sport *a,int n){
Sport turn;
double min;
int pos;
for(int i=0;i<n;i++){
min = a[i].grade;
pos = i;
for(int j=i+1;j<n;j++){
if(min>a[j].grade){
min = a[j].grade;
pos = j;
}
}
if(pos!=i){
turn.grade = a[i].grade;
turn.num = a[i].num;
a[i].grade = a[pos].grade;
a[i].num = a[pos].num;
a[pos].grade = turn.grade;
a[pos].num = turn.num;
}
}
}
void show(Sport* a,int n){
for(int i=0;i<n;i++){
cout<<" "<<setw(2)<<i+1<<" "<<setw(3)<<a[i].num<<" "<<setiosflags(ios::right)<<setw(4)<<a[i].grade<<endl;
}
}
int main(){
Sport a[]={
Sport("001",13.6),
Sport("002",14.8),
Sport("010",12.0),
Sport("011",12.7),
Sport("023",15.6),
Sport("025",13.4),
Sport("031",14.9),
Sport("036",12.6),
Sport("037",13.4),
Sport( "102",12.5),
Sport("325",15.3),
Sport("438",12.7)};
Order(a,12);
show(a,12);
return 0;
}