题目描述
有一群猫猫,每只猫都有自己的名称和体重。
用类来描述猫,名称和体重都是私有属性,要求加入属性的get方法。其他函数根据需要自己定义
创建一个动态的猫对象数组,存储各只猫的名称和体重
根据猫的体重对数组做升序排序,并输出排序后每只猫的名称
题目涉及的数值均用整数处理
输入
第一行输入n表示有n只猫
第二行输入一只猫的名称和体重,名称的最大长度为30
依次输入n行
输出
输出一行,输出排序后的猫的名称
输入样例1
4
巧克力胖三斤 1500
自来水瘦八两 400
芝士蛋糕肥六斤 3000
蔬菜沙拉轻四两 200
输出样例1
蔬菜沙拉轻四两 自来水瘦八两 巧克力胖三斤 芝士蛋糕肥六斤
代码
#include<iostream>
#include<string>
using namespace std;
class cats
{
public:
void get_name(string a);
void get_weight(int a);
void print()
{
cout << name << " ";
}
string ger_n() //在类里面才可以调用private 区域内文件
{
return name; //调用name
}
int get_w()
{
return weight; //调用weight
}
private:
int weight;
string name;
};
//定义类内部的函数
void cats::get_name(string a)
{
name = a;
}
void cats::get_weight(int a)
{
weight = a;
}
//类外的函数----------------------------------
bool judge(cats& a, cats& b)
{
if (a.get_w() > b.get_w() )
{
return 1;
}
else
{
return 0;
}
}
void swp(cats& a, cats& b)
{
if (judge(a, b))
{
cats flag;
flag = a;
a = b;
b = flag;
}
}
int main()
{
int n;
cin >> n;
cats* cat = new cats[n];
for (int i = 0; i < n; i++)
{
int a;
string b;
cin >> b >> a;
cat[i].get_name(b);
cat[i].get_weight(a);
}
for (int i = 0; i < n; i++) //冒泡排序
{
for (int j = i; j < n; j++)
{
swp(cat[i], cat[j]);
}
}
for (int i = 0; i < n; i++)
{
cat[i].print();
}
return 0;
}