#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; |
} |
by: 发表于:2017-09-01 09:53:04 顶(0) | 踩(0) 回复
??
回复评论