Problem C: 动物要吃饭Time Limit: 1 Sec Memory Limit: 128 MB
Submit: 1832 Solved: 1639
[Submit][Status]Description定义Animal类,只有一个纯虚函数eat。
定义Dog、Cat、Sheep、Chicken四个类,它们都是Animal的子类。
每个类重载eat方法,每个方法输出的内容见样例。Input一系列0~3之内的整数。Output每个输入对应一行输出,0、1、2、3分别代表Dog、Cat、Sheep、Chicken。Sample Input
0
1
2
3
2
3
1
0
Sample Output
Dog eats bone.
Cat eats fish.
Sheep eats grass.
Chicken eats worm.
Sheep eats grass.
Chicken eats worm.
Cat eats fish.
Dog eats bone.
HINTAppend Codeappend.cc,
#include<iostream>
#include<string>
#include<vector>
using namespace std;
class Animal{
public:
// int price;
// string name;
// int sum;
// Person( ){ }
// virtual void input(){ }
// virtual int pay(){}
virtual void eat(){ }
};
class Dog:public Animal
{
public:
// void input(){cin>>price;}
// int pay(){ return price*1000;}
void eat(){cout<<"Dog eats bone."<<endl;}
// Manager(string s){name=s; }
};
class Cat:public Animal
{
public:
// int jiang;
// void input(){cin>>price>>jiang;}
// int pay(){ return price*(12+jiang)*1000;}
void eat(){cout<<"Cat eats fish."<<endl;}
// Employee(string s){name=s; }
};
class Sheep:public Animal
{
public:
// int huor;
// void input(){cin>>price>>huor;}
// int pay(){ return price*huor;}
void eat(){cout<<"Sheep eats grass."<<endl;}
// HourlyWorker(string s){name=s; }
};
class Chicken:public Animal
{
public:
// int nian;
// void input(){cin>>price>>nian;}
// int pay(){ return price*12*1000+nian*1000*0.02;}
void eat(){cout<<"Chicken eats worm."<<endl;}
// CommWorker(string s){name=s; }
};
int main()
{
int c;
vector<Animal*> animals;
vector<Animal*>::iterator itr;
while(cin>>c)
{
switch(c)
{
case 0 :
animals.push_back(new Dog());
break;
case 1:
animals.push_back(new Cat());
break;
case 2:
animals.push_back(new Sheep());
break;
case 3:
animals.push_back(new Chicken());
}
}
for (itr = animals.begin(); itr != animals.end(); itr++)
(*itr)->eat();
return 0;
}