Các anh chị giúp em với, em đang làm bài về kiểu dữ liệu ngày tháng trong C++, bài làm của em như sau:
đầu tiên là định nghĩa lớp date.h
C++ Code:
  1. #include <iostream>
  2. #include <conio.h>
  3. using namespace std;
  4.  
  5. class date
  6. {
  7.     int ngay, thang, nam;
  8.     static int Days[];
  9.     static int Dayt[];
  10. public:
  11.     date(void);
  12.     int nhuan();
  13.     int ngaynam();
  14.     void nhap();
  15.     void hienthi();
  16.     int kttrung(date a);
  17.     int ktlon(date a);
  18.     void advance();
  19.     ~date(void);
  20. };
Tiếp theo là date.cpp dể định nghĩa các hàm có trong lớp date
C++ Code:
  1. #include "StdAfx.h"
  2. #include "date.h"
  3. #include <iostream>
  4. #include <conio.h>
  5. using namespace std;
  6.  
  7. date::Days[]={31,28,31,30,31,30,31,31,30,31,30,31};
  8. date::Dayt[]={31,59,90,120,151,181,212,243,273,304,334,365};
  9. date::date(void)
  10. {
  11. }
  12. //Hàm nhuan() để kiểm tra năm nhuận
  13. int date::nhuan()
  14. {
  15.     return ((nam%4==0&&nam%100!=0)||(nam%400!=0));
  16. }
  17. //Ham ngaynam() trả về số ngày trong 1 tháng bất kỳ của 1 năm
  18. int date::ngaynam()
  19. {
  20.     if(thang==1||thang==3||thang==5||thang==7||thang==8||thang==10||thang==12)
  21.         return 31;
  22.     else if(thang==4||thang==6||thang==9||thang==11)
  23.         return 30;
  24.     else return (28+nhuan());
  25. }
  26. void date::nhap()
  27. {
  28.     do{
  29.         cout<<"\nNhap ngay thang nam: ";
  30.         cin>>ngay>>thang>>nam;
  31.     }while(ngay<0||(ngay>ngaynam())||nam<0||thang<0||thang>12);
  32. }
  33. void date::hienthi()
  34. {
  35.     cout<<"\n Ngay: "<<ngay<<" thang: "<<thang<<" nam: "<<nam;
  36. }
  37. int date::kttrung(date a)
  38. {
  39.     return (ngay==a.ngay&&thang==a.thang&&nam==a.nam);
  40. }
  41. int date::ktlon(date a)
  42. {
  43.     if(nam>a.nam)   return 1;
  44.     else if(nam==a.nam)
  45.         if(thang>a.thang)   return 1;
  46.         else if(thang==a.thang)
  47.             if(ngay>a.ngay) return 1;
  48. }
  49. //Phần thắc mắc của em là hàm advance này, em sử dụng hàm advance này để tăng lên 1 lượng Date
  50. //nhập vào từ bàn phím...
  51. void date::advance()
  52. {
  53.     date a;
  54.     a.nhap();
  55.     ngay=ngay+a.ngay;
  56.     thang=thang+a.thang;
  57.     nam=nam+a.nam;
  58.     if(thang>12)
  59.     {
  60.         nam=nam+(thang/12);
  61.         thang=thang%12;
  62.         if(thang==0)
  63.             thang=1;
  64.     }
  65.     ngay=ngay+Dayt[thang-1];
  66.     if(nhuan()!=0)    //Nếu là năm nhuận
  67.     {
  68.         if(ngay>366)       //Nếu số ngày vượt quá 366
  69.         {
  70.             nam=nam+1;
  71.             ngay=ngay%366;
  72.             for(i=0;i<12;i++)
  73.             {
  74.                 if(ngay>Dayt[i]&&ngay<Dayt[i+1])
  75.                 {
  76.                 thang=i+1;
  77.                 ngay=ngay%(Dayt[i]);
  78.                 }
  79.                 else thang=1;
  80.             }
  81.         }
  82.         else
  83.         {
  84.             for(i=0;i<12:i++)
  85.             {      
  86.                 if(ngay>Dayt[i]&&ngay<Dayt[i+1])
  87.                 {
  88.                 thang=i+1;
  89.                 ngay=ngay%(Dayt[i]+nhuan());
  90.                 }
  91.                 else thang=1;
  92.             }
  93.         }
  94.     }
  95.     else     //Không phải năm nhuận
  96.     {
  97.         if(ngay>365)
  98.         {
  99.             nam=nam+1;
  100.             ngay=ngay%365;
  101.             for(i=0;i<12;i++)
  102.             {
  103.                 if(ngay>Dayt[i]&&ngay<Dayt[i+1])
  104.                 {   thang=i+1;
  105.                     ngay=ngay%(Dayt[i+1]+nhuan());
  106.                 }
  107.                 else thang=1;
  108.             }
  109.         }
  110.         else
  111.         {
  112.             for(i=0;i<12;i++)
  113.             {
  114.                 if(ngay>Dayt[i]&&ngay<Dayt[i+1])
  115.                 {   thang=i+1;
  116.                     ngay=ngay%(Dayt[i+1]);
  117.                 }
  118.                 else thang=1;
  119.             }
  120.         }
  121.     }
  122. }
  123.  
  124.        
  125.                
  126.  
  127.  
  128. date::~date(void)
  129. {
  130. }
và tiếp theo là file để thực thi chuơng trình:
Code:
// ngay thang.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include "date.h"
#include <iostream>
#include <conio.h>
using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	date a,b,c;
	int i;
	a.nhap(); a.hienthi();
	b.nhap(); b.hienthi();
	c.nhap(); c.hienthi();
	i=a.kttrung(b);
	if(i!=0)	cout<<"\na trung voi b";
	else cout<<"\n a khong trung voi b";
	i=a.ktlon(c);
	if(i!=0)		cout<<"\n a lon hon b";
	else cout<<"\n a be hon b";
	a.advance();
	a.hienthi();
	getch();
	return 0;
}
Nhưng không hiểu sao...sau khi biên dịch đến phần thực thi hàm advance thì nó lại không xuất hiện gì để thực hiện hàm advance mà nó tự thoát ra....Các anh chị chỉ ra chỗ em còn thiếu hoặc sai để em sửa lại với.