06-构造与析构-
题目描述
有一群猫猫,每只猫都有自己的名称和体重。
用类来描述猫,名称和体重都是私有属性,要求加入属性的get方法。其他函数根据需要自己定义
创建一个动态的猫对象数组,存储各只猫的名称和体重
根据猫的体重对数组做升序排序,并输出排序后每只猫的名称
题目涉及的数值均用整数处理
输入
第一行输入n表示有n只猫
第二行输入一只猫的名称和体重
依次输入n行
输出
输出一行,输出排序后的猫的名称
输入样例
4
巧克力胖三斤 1500
自来水瘦八两 400
芝士蛋糕肥六斤 3000
蔬菜沙拉轻四两 200
蔬菜沙拉轻四两 自来水瘦八两 巧克力胖三斤 芝士蛋糕肥六斤
#include <iostream>
using namespace std;
class cat
{
string name;
int weight;
public:
cat()
{name="noname";weight=0;}
cat(string n,int w)
{name=n;weight=w;}
void setname(string n)
{name=n;}
void setweight(int w)
{weight=w;}
string getname()
{return name;}
int getweight()
{return weight;}
};
int main()
{
int t,i,w;
string n;
cat c[100];
cin>>t;
for(i=0;i<t;i++)
{
cin>>n>>w;
c[i].setname(n);c[i].setweight(w);
}
int j,temp;
string temp1;
for(i=0;i<t-1;i++)//冒泡排序 名字和体重要同时变
for(j=0;j<t-i-1;j++)
if(c[j].getweight()>c[j+1].getweight())
{
temp=c[j+1].getweight();
c[j+1].setweight(c[j].getweight());
c[j].setweight(temp);
temp1=c[j+1].getname();
c[j+1].setname(c[j].getname());
c[j].setname(temp1);
}
for(i=0;i<t;i++)
cout<<c[i].getname()<<" ";
cout<<endl;
return 0;
}