Từ 1 tới 6 trên tổng số 6 kết quả

Đề tài: Xây dựng class Date trên C++ theo Lập trình hướng đối tượng?

  1. #1
    Ngày gia nhập
    04 2009
    Bài viết
    1

    Question Xây dựng class Date trên C++ theo Lập trình hướng đối tượng?

    Em mới học lập trình hướng đối tượng nhưng ông thầy cho đề em đọc mãi vẫn không hiểu có bác nào pro lý giải giúp em:
    Hãy định nghĩa lớp Date với dữ liệu thành phần gồm ngày, tháng và năm.

    Lớp Date có các hàm thành viên:
    - Constructor mặc định,
    - Các hàm truy cập: ngày, tháng và năm.
    - Hàm reset(int, int, int) để đặt lại ngày, tháng, năm cho một đối tượng.
    - Hàm normalize() để đảm bảo những thành phần dữ liệu nằm trong khoảng: 1 <= năm, 1 <= tháng <= 12, 1 <= month <= daysIn(month). Hàm daysIn(int) là hàm tiện ích trả về số ngày trong tháng (không xét năm nhuận).
    - Hàm print() để in thông tin.

    Viết hàm main() và các mã chương trình cần thiết để kiểm tra lớp Date.

  2. #2
    Ngày gia nhập
    12 2008
    Bài viết
    4

    Đây là một bài co s lẽ là chưa thỏa mãn yêu cầu đề bài của bạn lắm nhưng bạn hãy lấy bài này tham khảo nha!
    Code:
    #include <iostream.h>
    #include <conio.h>
    #define FALSE 0
    #define TRUE !FALSE
    char* Thang[]={"","gieng","hai","ba","bon","nam","sau","bay","tam",
    "chin","muoi","muoi mot","chap"};
    int NgayThang[]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    class CDate
    {
    private:
    int mNgay,mThang,mNam;
    int laNamNhuan(int);
    public:
    void nhap();
    int hopLe();
    void in();
    };
    void CDate::nhap()
    {
    cout<<endl<<"Ngay: ";cin>>mNgay;
    cout<<endl<<"Thang: "; cin>>mThang;
    cout<<endl<<"Nam: ";cin>>mNam;
    }
    int CDate::hopLe()
    {
    if ((mThang<1)||(mThang>12))
    return FALSE;
    else
    {
    if ((mNgay>=1)&&(mNgay<=NgayThang[mThang]))
    return TRUE;
    else if ((mNgay==29)&&laNamNhuan(mNgay))
    return TRUE;
    else
    return FALSE;
    }
    }
    int CDate::laNamNhuan(int nam)
    {
    if (((nam%400)==0)||(((nam%4)==0)&&((nam%100)!=0)))
    return TRUE;
    else
    return FALSE;
    }
    void CDate::in()
    {
    cout<<endl<<"Ban da nhap vao ngay "<<mNgay;
    cout<<" thang "<<Thang[mThang];
    cout<<" nam "<<mNam;
    }
    void main()
    {
    CDate ngay;
    ngay.nhap();
    if (ngay.hopLe())
    ngay.in();
    else
    lập trình hướng đối tượng với C++
    Trang 19
    cout<<"BAN NHAP NGAY KHONG HOP LE";
    getch();
    }

  3. #3
    Ngày gia nhập
    04 2009
    Bài viết
    3

    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


    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();
    }

  4. #4
    Ngày gia nhập
    09 2009
    Bài viết
    35

    Code:
    #include<iostream>
    using namespace std;
    class Time{
    	public:
    	int d,m,y;
    	Time(int a =0,int b = 0,int c = 0){
    		d = a;
    		m = b;
    		y = c;
    	}
    	void in(){
    		cout<<"\n";
    		cout<<" ngay : "<<d<<"\t"<<" thang : "<<m<<"\t"<<" nam : "<<y<<"\n";
    		}
    
    	void reset(int x1,int x2,int x3){
    		this->d = x1;
    		this->m = x2;
    		this->y = x3;
    		in();
    		}
       void dayin(){
    	   	   switch(this->m)
    	   {
    		   case 1:
    		   case 3:
    		   case 5:
    		   case 7:
    		   case 8:
    		   case 10:
    		   case 12:
    		   cout<<"this month have 31 days ";
    		   break;
    		   case 4:
    		   case 6:
    		   case 9:
    		   case 11:
    		   cout<<"this month have 30days ";
    		   break;
    		   case 2:
    		   cout<<"this month have 28 days ";
    		   break;
    	   }
    	}
    };
    	void main(){
    		Time d(2,8,1989);
    		cout<<"the first time :";
    		d.in();
    		cout<<"th second time:";
    		d.reset(22,10,1989);
    		d.dayin();
            }

  5. #5
    Ngày gia nhập
    01 2009
    Bài viết
    165

    Trích dẫn Nguyên bản được gửi bởi minhtoantm Xem bài viết
    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


    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();
    }
    cách đơn giản nhất là cho vòng lặp chạy x lần mỗi lần chạy tăng thêm 1 ngày rồi xác định ngày đó là ngày nào,tuy nhiên cách này rất dở mình ko có thời gian nên ko tìm được cách nào khác.

  6. #6
    Ngày gia nhập
    08 2010
    Bài viết
    1

    Mặc định Bài cũng tương đối,mọi người xem qua góp ý ha

    Code:
    #include<iostream.h>
    #include<conio.h>
    #include<iomanip.h>
    using namespace std;
    class date
    {
        private:
            int d,m,y;
        public:
            void nhap()
            {
                   cin>>d>>m>>y;
            }
            int daysin()
             {
              int sn;
              switch(m)
                 {
                       case 1:case 3:case 5: case 7: case 8:case 11:case 12:sn=31;break;
                       case 4:case 6: case 9:case 10:sn=30;break;
                       default:
                       {
                       if (y%4==0)
                       {
                          sn=29;break;}
                          else sn=28;
                       }
                  }
              return(sn);
               }
            void  normalize()
            {
                  while (m>12)
                        {
                          y++;
                           m-=12;
                        }
                 while(d>daysin())
                         {
                         d-=daysin();
                         m++;
                         if (m>12)
                            {
                             y++;
                              m-=12;
                             }
                         }
            }
    
          int songay(date d1,date d2)
           {
            int dem=0;
            while (d1.d!=d2.d ||d1.m!=d2.m ||d1.y!=d2.y)
            {
                d1.d++;
                dem++;
                d1.normalize();
            }
            return(dem);
            }
    };
    main()
    {
        date d1,d2;
        int dem;
       cout<<"\n nhap vao ngay thu nhat";d1.nhap();d1.normalize();
       cout<<"\n nhap vao ngay thu hai";d2.nhap();d2.normalize();
       dem=d1.songay(d1,d2);
        cout<<"\n so ngay la"<<dem;
        getch();
    }

Các đề tài tương tự

  1. Cần một tài liệu tổng hợp các class xây dựng sẵn trong c# kèm theo hướng dẫn sử dụng
    Gửi bởi phucloveit trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 6
    Bài viết cuối: 06-07-2013, 05:17 PM
  2. ADO.NET Tạo class Đăng nhập hệ thống theo mô hình 3Layer.
    Gửi bởi cuongcntt trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 6
    Bài viết cuối: 06-05-2011, 10:32 AM
  3. Về việc add class theo hướng đối tượng trong MFC..
    Gửi bởi namthienlong2001 trong diễn đàn Thắc mắc lập trình Visual C++
    Trả lời: 4
    Bài viết cuối: 09-10-2010, 12:21 AM
  4. class date và class time
    Gửi bởi maithanhgiang312 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 7
    Bài viết cuối: 07-05-2010, 06:45 PM
  5. Viết lớp DATE trên C++?
    Gửi bởi thesun612 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 22-05-2009, 07:26 PM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn