Announcement

Collapse
No announcement yet.

CString CDate

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [C++] CString CDate

    Bạn nào có code về xây dựng lớp Cstring, CDate hay yêu cầu để xây dựng 2 lớp này cho tham khảo với....lớp thực hành sáng T2 và chiều T4
    thanks!

  • #2
    Code:
    #include <stdio.h>#include <iostream>
    using namespace std;
    
    
    class CDate
    {
    private:
        int ngay,thang,nam;
    public:
        CDate(){ngay=1;thang=1;nam=1900;} //Ham khoi tao khong doi so
        ~CDate(){} //Ham huy
        CDate(int date,int month,int year){ngay=date;thang=month;nam=year;} //Ham khoi tao co doi so
        CDate(const CDate &c) {ngay=c.ngay; thang=c.thang; nam=c.nam;}; //Ham tao sao chep
        const CDate&operator=(const CDate&); //Ham gan
        bool namNhuan(); // Kiểm tra có phải là năm nhuân hay không?
        int daysIn(); // Số ngày trong tháng
        //friend int findIndex(CDate c); //Hàm cho biết vị trí của ngày này trong năm là bao nhiêu :D
        int reset(int date,int month,int year)    {ngay=date; thang=month; nam=year;} // Hàm tạo giá trị mới cho ngày-tháng-năm
        friend istream& operator>>(istream&, CDate&); // Hàm nhập
        friend ostream& operator<<(ostream&, CDate&); //Hàm xuất
        CDate operator+(int ); // Cộng thêm số ngày
    };
    
    
    const CDate& CDate::operator=(const CDate &c)
    {
        ngay=c.ngay;
        thang=c.thang;
        nam=c.nam;
        return *this;
    }
    bool CDate::namNhuan()
    {
        if((nam%4==0&&nam%100!=0)||nam%400==0) return true;
        else return false;
    }
    int CDate::daysIn()
    {
        if(thang==1||thang==3||thang==5||thang==7||thang==8||thang==10||thang==12) return 31;
        else
            if(thang==4||thang==6||thang==9||thang==11) return 30;
            else
                if(namNhuan()) return 29;
                else return 28;
    }
    //int findIndex(CDate c)
    //{
    //    int temp=c.ngay;
    //    for(int i=1;i<c.thang;i++) temp+=c.daysIn();
    //    return temp;
    //
    //}
    istream& operator>>(istream &nhap,CDate &c)
    {
        cout<<"\nNhap nam : "; cin>>c.nam;
        while(c.nam<1900){
            cout<<"Nam khong hop le, hay nhap lai.. "; cin>>c.nam;
        }
        cout<<"Nhap thang : "; cin>>c.thang;
        while(c.thang<1||c.thang>12){
            cout<<"Thang chi co the la [1..12], hay nhap lai.. "; cin>>c.thang;
        }
        cout<<"Nhap ngay : "; cin>>c.ngay;
        while((c.ngay>c.daysIn())||c.ngay<1){
            cout<<"\Thang "<<c.thang<<"-"<<c.nam<<" co "<<c.daysIn()<<" ngay, nhap lai cho dung.. "; cin>>c.ngay;}
        return nhap;
    }
    ostream& operator<<(ostream &xuat,CDate &c)
    {
        cout<<c.ngay<<"-"<<c.thang<<"-"<<c.nam;
        return xuat;
    }
    CDate CDate::operator+(int d)
    {
        CDate c=*this;
        c.ngay+=d;
        do{
            if(c.ngay>c.daysIn()){c.ngay-=c.daysIn(); c.thang++;}
            if(c.thang>12){c.thang-=12; c.nam++;}
        }while(c.ngay>c.daysIn());
        return c;
    }
    void main()
    {
        CDate a,b; 
        cout<<"Nhap ngay thang nam :"; cin>>a;
        b=a+50;
        cout<<"Cong them 50 ngay thanh : "<<b<<endl;
        /*cout<<"\nNgay "<<b<<" la ngay thu "<<findIndex(b)<<" cua nam.";*/
    }
    Bạn tham khảo và hoàn thiện phần //friend int findIndex(CDate c); //Hàm cho biết vị trí của ngày này trong năm là bao nhiêu nhé :shot:

    Comment


    • #3
      cám ơn nhiều thiệt là nhiều luôn......

      Comment


      • #4
        bạn nào có code lớp String theo kiểu hướng đối tượng ko, up lên cho mình xem với..:funny:

        Comment

        LHQC

        Collapse
        Working...
        X