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!
thanks!
#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.";*/ }
Comment