现在要开发一个系统,对宠物的生长状态进行管理。
给出下面的一个基类框架
class Pet
{
protected:
string name;//姓名
int length;//身长
int weight;//体重
int current;//当前日期
public:
virtual void display(int day)=0;//输出目标日期的身长和体重
Pet(string name, int l, int w, int c);
}
以Pet为基类,构建出Cat和Dog两个类:
Cat一天身长加1,体重加2。
Dog一天身长加2,体重加1。
生成上述类并编写主函数,要求主函数中有一个基类Pet指针数组,数组元素不超过10个。
Pet *pt[10];
主函数根据输入的信息,相应建立Cat类对象或Dog类对象,并给出目标日期宠物的身长和体重。
提示:应用虚函数实现多态
每个测试用例占一行,每行给出宠物的基本信息,第一个为当前宠物的类型:1为Cat,2为Dog。接下来为它的名字,随后的两个数字为身长和体重,最后为测身长和体重的日期(不大于10的正整数)。最后一行为目标日期(大于10的正整数)
输出目标日期宠物姓名、身长和体重
1 Marry 22 12 5
2 Jack 10 9 9
1 Jim 11 8 6
11
Marry 28 24
Jack 14 11
Jim 16 18
下面是代码,第一次做的时候参考了别人的代码,这是复习自己做的:
#include<iostream>
#include <string>
using namespace std;
class Pet
{
protected:
string name;
int length;
int weight;
int current;
public:
virtual void display(int day)=0;
Pet(string name, int l, int w, int c);
};
Pet::Pet(string name, int l, int w, int c){
this->name = name;
length = l;
weight = w;
current = c;
}
class Cat:public Pet{
public:
Cat(string i,int l,int w,int cu):Pet(i,l,w,cu){
}
void display(int day){
cout<<name<<" "<<day-current+length<<" "<<(day-current)*2+weight<<endl;
}
};
class Dog:public Pet{
public:
Dog(string i,int l,int w,int cu):Pet(i,l,w,cu){
}
void display(int day){
cout<<name<<" "<<(day-current)*2+length<<" "<<day-current+weight<<endl;
}
};
int main(){
Pet *pt[10];
int n=0,size = 0;
string j;
int le,we,cur,de;
while(cin>>n){
if(n==1){
cin>>j>>le>>we>>cur;
pt[size++] = new Cat(j,le,we,cur);
}
else if(n == 2){
cin>>j>>le>>we>>cur;
pt[size++] = new Dog(j,le,we,cur);
}
else{
de = n;
break;
}
}
for(int i = 0;i<size;i++){
pt[i]->display(de);
delete pt[i];
}
}
有几个要点:
1,不知道输入几个Cat和Dog,所以要用C++动态数据分配,每次new一个动物;
2,释放分配的空间要一个一个的释放(不知道是不是因为对象数组指针不满的原因)。
相关知识
sHr? 7
【#7个月狗狗宠物店...
拉布拉多7个月注意些什么
宠物指挥官:[7]训练狗趴下,卧倒
《识字7》课堂实录(精选13篇)
梦幻西游手游:7技能吸血鬼+7技能羽云仙子=10技能羽云仙子,就是这么真实!
沈阳7*24H宠物殡葬
挑选画眉鸟7要和5不要
7旬医生示范颈椎操火了
突发!7️⃣月优惠来...
网址: 7 https://m.mcbbbk.com/newsview155921.html
上一篇: 天津买布偶猫宠物基地 买布偶猫哪 |
下一篇: 让宠物逆龄生长?这款即将上市的创 |