11-E. 宠物的生长(虚函数和多态)

该博客介绍了如何使用C++实现一个宠物生长管理系统,利用虚函数和多态特性来管理猫和狗的生长状态。通过基类Pet定义了基本属性和虚函数display,派生出Cat和Dog类并覆盖display方法,根据输入信息创建对象并输出不同日期的宠物身长和体重。示例展示了如何处理日期间隔计算和错误检查。
摘要由CSDN通过智能技术生成

11-虚函数与多态-
题目描述
需要开发一个系统,对宠物的生长状态进行管理。给出下面的基类框架:

class Pet

{ protected:

string name;//姓名

int length;//身长

int weight;//体重

CDate current;//开始记录时间

日期类CDate包含年、月、日三个私有数据,其他方法根据需要自拟。

public:

virtual void display(CDate day)=0;//输出目标日期时宠物的身长和体重

}

以Pet为基类,构建出Cat和Dog两个类:

Cat一天身长加0.1,体重加0.2。

Dog一天身长加0.2,体重加0.1。

生成上述类并编写主函数,要求主函数中有一个基类指针Pet *pt,用于测试子类数据。

主函数根据输入的信息,相应建立Cat类对象或Dog类对象,并给出测量日期时宠物的身长和体重。

输入
第一行为测试次数

第二行是开始记录日期

从第三行起,每个测试用例占一行,每行给出宠物的基本信息:宠物的类型(1为Cat,2为Dog)、名字、身长、体重、最后测量的日期。

输出
要求输出目标日期宠物姓名、身长和体重(结果要求保留小数点后2位)。若测量日期小于开始日期,输出”error”。

输入样例
3
2019 5 5
1 tony 10 10 2018 12 30
2 jerry 5 6 2019 5 10
1 tom 3 4 2019 6 1

error
jerry after 5 day: length=6.00,weight=6.50
tom after 27 day: length=5.70,weight=9.40

*看上去是虚函数,实际上是算两个时间之间的距离

#include<iostream>
#include<iomanip>
using namespace std;

class Cdate
{
   
    int year,month,day;
public:
    Cdate(int y,int m,int d):year(y),month(m),day(d){
   }
    
    int leap(int y)//是否是闰年,是闰年return 1
    {
   
        int x;
        if((y%4==0&&y%100!=0)||(y%100==0&&y%400==0))
            x=1;
        else
            x=0;
        return x;
    }
    int dayssum(Cdate c)//时间加总
    {
   
        int sum,i;
        int days[13]={
   0,31,29,31,30,31,
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值