用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - c++代码库

在对象数组里通过动物名字查询动物数量

2017-08-14 作者:芙蓉妹妹举报

[c++]代码库

#include<iostream>
#include<string>
using namespace std;
class Animal
{
protected:
    string name;//某动物名
    int num;//该动物的数量
public:
    //无参构造
    Animal()
    {
        name="NULL";
        num=0;
    }//设置动物名和数量
    void setAnimal(string n,int m)
    {
        name=n;
        num=m;
    }
    //返回动物数量
    int getNum() const
    {
        return num;
    }
    //返回动物名称
    string getName() const
    {
        return name;
    }
    //重载运算符=,以便之后快速存入动物
    Animal &operator=( const Animal &a)
    {
        if(this != &a)
        {
            this-> num=a.num;
            this->name=a.name;
        }
        return *this;
    }
};
class AnimalList
{
private:
    Animal *animalList;
    int numOfAnimal;//动物种数
public:
    AnimalList(Animal *animals, int n)
    {
        numOfAnimal=n;
        animalList=new Animal[n];//申请n种动物的空间
        for(int i=0; i<n; i++)
            animalList[i]=animals[i];//把n种动物都存进去
    }
    //重载运算符[],根据动物名字找动物数量
    int operator[](string name)
    {
        for(int i=0; i<numOfAnimal; i++)
        {
            if(name == animalList[i].getName())//找到该动物
                return animalList[i].getNum();//返回该动物的数量
        }
        return -1;//没有此动物名字,返回-1
    }
};
int main()
{
    int cases;
    string name;
    int num;
    cin>>cases;//输入动物种数
    Animal animals[cases];//根据种数开数组
    //挨个录入动物信息
    for (int i = 0; i < cases; i++)
    {
        cin>>name>>num;
        animals[i].setAnimal(name, num);
    }
    AnimalList animalList(animals, cases);

    cin>>cases;//输入查询次数
    for (int i = 0; i < cases; i++)
    {
        cin>>name;
        if (animalList[name] != -1)
            cout<<"There are "<<animalList[name]<<" "<<name<<"s."<<endl;
        else
            cout<<"There is none "<<name<<"."<<endl;
    }
    return 0;
}


分享到:
更多

网友评论    (发表评论)

共1 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。