【15分】C. 最胖的加菲(类与对象+数组)
题目描述
有一群猫猫,每只猫都有自己的名称和体重。
用类来描述猫,名称和体重都是私有属性,要求加入属性的get方法。其他函数根据需要自己定义
创建一个动态的猫对象数组,存储各只猫的名称和体重
根据猫的体重对数组做升序排序,并输出排序后每只猫的名称
题目涉及的数值均用整数处理
输入
第一行输入n表示有n只猫
第二行输入一只猫的名称和体重
依次输入n行
输出
输出一行,输出排序后的猫的名称
输入样例1
4
chocolate 1500
water 400
cheese 3000
vegetable 200
输出样例1
vegetable water chocolate cheese
代码
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
class Cat
{
private:
char* name;
int weight;
public:
void set(char* Name,int Weight)
{
name = new char[strlen(Name) + 1];
strcpy(name,Name);
weight = Weight;
}
int getWeight() {return weight;}
char* getName() {return name;}
};
bool cmp(Cat &a,Cat &b)
{
return a.getWeight() < b.getWeight();
}
void sortCat(Cat *&mycat,int n)
{
sort(mycat,mycat + n,cmp);
}
void printCat(Cat *&mycat,int n)
{
for(int i = 0;i < n;i ++)
{
if(i) cout << " ";
cout << mycat[i].getName();
}
cout << endl;
}
int main()
{
int t;
cin >> t;
Cat *mycat = new Cat[t];
for(int i = 0;i < t;i ++)
{
char Name[10];
int Weight;
cin >> Name >> Weight;
mycat[i].set(Name,Weight);
}
sortCat(mycat,t);
printCat(mycat,t);
delete []mycat;
return 0;
}