Nguyên bản được gửi bởi minhtoantm
Nguyên bản được gửi bởi
Code:
#include<iostream.h> #include<math.h> #include<stdio.h> #include<conio.h> class cDate { int day,month,year; public://constructor cDate() {day=27;month=10;year=2009;} cDate(int d,int m,int y); cDate(int d); public://cac ham tien ich friend istream & operator >>(istream &is,cDate &a); friend ostream &operator <<(ostream &os,cDate a); cDate NextDay(); cDate NextDay(int d); int SoSanh(const cDate &b); }; //--------- cDate::cDate(int d,int m,int y) { switch(m) { case 1:case 3:case 5:case 7:case 8:case 10:case 12:{d=d%31;m=m+d/31;}break; case 4:case 6:case 9:case 11:{d=d%30;m=m+d/30;}break; case 2:{d=d%28;m=m+d/28;break;} } m=m%12; y=y+m/12; day=d;month=m;year=y; } // Ham nhap istream & operator >>(istream& is,cDate &a) { int t; cout<<"Nhap nam: "; is>>a.year; cout<<"Nhap thang: "; is>>t; while(t>12) { cout<<"Thang phai nho hon 12, vui long nhap lai thang: "; is>>t; } a.month=t; cout<<"Nhap ngay: "; is>>a.day; while(a.month==2 && a.year%4==0 && a.day>29) { cout<<"Nam nay la nam nhuan, thang hai chi co 29 ngay. Vui long nhap lai ngay: "; is>>a.day; } while(a.month==2 && a.year%4!=0 && a.day>28) { cout<<"Day khong phai la nam nhuan,thang 2 chi co 28 ngay. Vui long nhap lai ngay: "; is>>a.day; } while(a.day>31 && (a.month==1 || a.month==3 ||a.month==5 ||a.month==7 ||a.month==8 ||a.month==10||a.month==12)) { cout<<"Thang 1,3,5,7,8,10,12 chi co toi da 31 ngay. Vui long nhap lai ngay: "; is>>a.day; } while(a.day>30 && (a.month==4 ||a.month==6||a.month==9||a.month==11)) { cout<<"Thang 4,6,9,11 chi co toi da 30 ngay. Vui long nhap lai ngay: " ; is>>a.day; } return is; } //Ham xuat ostream &operator <<(ostream &os,cDate a) { os<<"\n"<<a.day; os<<"/"<<a.month; os<<"/"<<a.year; return os; } //tim ngay ke tiep cua ngay hom doa cDate cDate::NextDay() { cDate c; switch(this->month) { case 1:case 3:case 5:case 7:case 8:case 10:case 12: { if(this->day<=30) { c.day=this->day+1; c.month=this->month; c.year=this->year; } else { if(this->month==12) { c.day=1; c.month=1; c.year=this->year+1; } else { c.day=1; c.month=this->month+1; c.year=this->year; } } break; } case 4:case 6:case 9:case 11: { if(this->day<=29) { c.day=this->day+1; c.month=this->month; c.year=this->year; } else { c.day=1; c.month=this->month+1; c.year=this->year; } break; } case 2: { if(this->year%4==0) { if(this->day<28) { c.day=this->day+1; c.month=this->month; c.year=this->year; } else { c.day=1; c.month=3; c.year=this->year; } } else { if(this->day<27) { c.day=this->day+1; c.month=this->month; c.year=this->year; } else { c.day=1; c.month=3; c.year=this->year; } } break; } } return c; } // Tim ngay sau doa bao nhieu ngay cDate cDate::NextDay(int d) { } void main() { cDate a,c; cin>>a; cout<<"\nNgay vua nhap la: "<<a; c=a.NextDay(); cout<<"Ngay ke tiep ngay vua nhap la:"<<c; getch(); }
Bài của mình hoàn chỉnh hơn của binhcntt xíu, nhưng vẫn chưa đầy đủ lắm. Mình còn đang vướng chỗ sau x ngày kể từ ngày hiện tại là ngày gì…Nếu cóa bạn nào biết thì chỉ mình với nha