C++第13周项目4 - 多重继承出日期时间类

课程首页地址:http://blog.csdn.net/sxhelijian/article/details/7910565,本周题目链接:http://blog.csdn.net/sxhelijian/article/details/8953304


【项目4】日期时间类
  定义一个日期类Date,数据成员包括年、月、日,SetDate(int y,int m,int d)和PrintDate()函数分别用于设置日期和显示日期;再定义一个时间类Time,数据成员包括时、分、秒,SetTime(int h,int m,int s)和PrintTime()函数分别用于设置时间和显示时间,在此基础上再定义一个日期时间类TimeDate,充分利用已有的两个类,并编写主函数测试所定义的类结构。


参考解答:

#include<iostream>
using namespace std;
class Date
{
public:
    void SetDate(int y,int m,int d)
    {
        Year=y;
        Month=m;
        Day=d;
    }
    void PrintDate()
    {
        cout<<Year<<"/"<<Month<<"/"<<Day<<endl;
    }
    Date():Year(0),Month(0),Day(0){}
    Date(int y,int m,int d):Year(y),Month(m),Day(d){}

private:
    int Year,Month,Day;
};
class Time
{
public:
    void SetTime(int h,int m,int s)
    {
        Houre=h;
        Minutes=m;
        Seconds=s;
    }
    void PrintTime()
    {
        cout<<Houre<<":"<<Minutes<<":"<<Seconds<<endl;
    }
    Time():Houre(0),Minutes(0),Seconds(0){}
    Time(int h,int m,int s):Houre(h),Minutes(m),Seconds(s){}

private:
    int Houre,Minutes,Seconds;
};
class TimeDate: public Date,public Time
{
public:
    TimeDate():Date(),Time() {};
    TimeDate(int y,int mo,int d,int h,int mi,int s):
        Date(y,mo,d),Time(h,mi,s) {}
    void PrintDate_Time()
    {
        PrintDate();
        PrintTime();
    }
};
int main()
{
    TimeDate dt_a,dt_b(2010,4,16,9,30,0);
    dt_a.PrintDate_Time();
    dt_b.PrintDate_Time();
    dt_a.SetTime(20,00,00);
    dt_a.SetDate(2008,8,7);
    dt_a.PrintDate_Time();
    return 0;
}




发布了2342 篇原创文章 · 获赞 4692 · 访问量 852万+
展开阅读全文

c++,的多重继承的困惑

10-12

计算三角形面积 由抽象类Point表示一个点并由其在空间上的坐标(x,y)确定,有纯virtual函数display(),该函数用于在派生类中显示面积;Point派生出类Line,该类是由两点构成的一线段;Line类派生出类Triangle是三角形面,该类由一线段和一点构成,该类有数据成员area(面积)。 请定义这三个类,并按以下要求编写应用程序: 有三个面对象a(0,0,3,5,9,8)、b(2,4,6,7,5,8)、c(1,2,3,6,9,9)和一个double变量sum表示a、b、c的面积和(即有语句:sum=a+b+c)并分别显示a、b、c的面积和sum。 海伦公式: 已知三角形三边x、y、z,设 p=(x+y+z)/2,则面积S=sqrt(p*(p-x)*(p-y)*(p-z)),函数sqrt()在<cmath>中。 输入的类型为a(0,1,5,7,6,8)这种 #include<iostream> #include<cmath> #include<iomanip> using namespace std; class Point { public: Point(); Point(double xx,double yy) { X=xx;Y=yy; } Point(Point&p); double GetX() { return X; } double GetY() { return Y; } private: double X,Y; }; Point::Point(Point&p) { X=p.X; Y=p.Y; } class Line:public Point { public: Line(); Line(Point xp1,Point xp2); Line(Line&L); double GetLength() { return length; } private: Point p1,p2; double length; }; Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2) { double x=p1.GetX()-p2.GetX(); double y=p1.GetY()-p2.GetY(); length=sqrt(x*x+y*y); } Line::Line(Line&L):p1(L.p1),p2(L.p2) { length=L.length; } class Triangle:public Line { public: Triangle(Line ap1,Line ap2,Line ap3); Triangle(Triangle&T); double GetArea() { return area; } private: Line l1,l2,l3; double area; }; Triangle::Triangle(Line ap1,Line ap2,Line ap3):l1(ap1),l2(ap2),l3(ap3) { double p=(l1.GetLength()+l2.GetLength()+l3.GetLength())/2.0; area=sqrt(p*(p-l1.GetLength())*(p-l2.GetLength())*(p-l3.GetLength())); } Triangle::Triangle(Triangle&T):l1(T.l1),l2(T.l2),l3(T.l3) { area=T.area; } int main() { double x1,y1,x2,y2,x3,y3; double sum=0.0,s=0.0;; char a='a'; for(int i=0;i<3;i++) { cout<<"请依次输入三个点的坐标:"<<endl; cin>>x1>>y1>>x2>>y2>>x3>>y3; cout<<"已获取坐标"<<endl; Point p1(x1,y1),p2(x2,y2),p3(x3,y3); Line line1(p1,p2),line2(p2,p3),line3(p3,p1); Triangle t(line1,line2,line3); cout<<a<<"面的面积为"<<t.GetArea()<<endl; a++; s=t.GetArea(); sum=sum+s; if(i==2) cout<<"a、b、c的面积和为"<<sum<<endl;; } } 问答

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客

分享到微信朋友圈

×

扫一扫,手机浏览