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

Đề tài: nhập ngày tháng nămm bất kỳ, tìm ngày hôm qua, kế tiếp

  1. #1
    Ngày gia nhập
    04 2011
    Nơi ở
    vũng tàu
    Bài viết
    7

    Mặc định nhập ngày tháng nămm bất kỳ, tìm ngày hôm qua, kế tiếp

    em mới học lập trình c++ hướng đối tượng, nên chưa hiểu nhiều về nó. Em đã thử code 2 bài tập tìm ngày nhưng chậy bị lỗi. Mong ace diễn đàn giúp đỡ , em cám ơn rất nhiều
    Code:
    // 02.cpp : Defines the entry point for the console application.
    
    // viet chuong trinh nhap vao 1 ngay, tim ngay ke tiep va xuat ket qua
    
    #include <stdafx.h>
    #include <stdio.h>
    #include <conio.h>
    
    class CNgay
    {
    	private:
    			int ng;
    			int th;
    			int nm;
    	public:
    			void Nhap ();
    			void Xuat ();
    			int ktNhuan ();
    			int sttTrongNam ();
    			long SoThuTu ();
    			void KhoiTao (int,int);
    			void KhoiTao (long);
    			CNgay (int,int,int);
    			CNgay KeTiep ();
    };
    
    void main ()
    {
    	CNgay a;
    	a.Nhap ();
    	CNgay kq = a.KeTiep ();
    	printf ("Ngay ban dau :\n");
    	a.Xuat();
    	printf ("\n Ngay ke tiep :\n");
    	kq.Xuat();
    }
    
    // dinh nghia ham Nhap
    void CNgay :: Nhap ()
    {
    	printf ("Nhap ngay : ");
    	scanf ("%d",&ng);
    	printf ("Nhap thang : ");
    	scanf ("%d",&th);
    	printf ("Nhap nam : ");
    	scanf ("%d",&nm);
    }
    
    // dinh nghia ham Xuat
    void CNgay :: Xuat ()
    {
    	printf ("\n Ngay:%d",ng);
    	printf ("\n Thang:%d",th);
    	printf ("\n Nam:%d",nm);
    }
    
    // dinh nghia ham ktNhuan
    int CNgay :: ktNhuan ()
    {
    	if (nm % 4 == 0 && nm % 100 != 0)
    		return 1;
    	if (nm % 400 == 0)
    		return 1;
    	return 0;
    }
    
    // dinh nghia ham sttTrongNam
    int CNgay :: sttTrongNam ()
    {
    	int ngaythang[12] = {31,28,31, 30,31,30,31,31,30,31,30,31};
    	if (ktNhuan() == 1)
    		ngaythang[1] = 29;
    	int stt = 0;
    	for(int i = 1;i <= th-1;i++)
    		stt = stt + ngaythang[i-1];
    	return (stt + ng);
    }
    
    // dinh nghia ham SoThuTu
    long CNgay :: SoThuTu ()
    {
    	long stt = 0;
    	for(int i=1;i <= nm-1;i++)
    	{
    		stt = stt + 365;
    		CNgay temp (1,1,i);
    		if (temp.ktNhuan() == 1)
    		stt = stt+1;
    	}
    	return (stt + sttTrongNam());
    }
    
    // dinh nghia ham TimNgay
    void CNgay :: KhoiTao (int nam,int stt)
    {
    	int ngaythang[12] = {31,28,31, 30,31,30,31,31,30,31,30,31};
    	CNgay temp (1,1,nam);
    	if (temp.ktNhuan() == 1)
    		ngaythang[1] = 29;
    	temp.th=1;
    	while (stt-ngaythang[temp.th-1] > 0)
    	{
    		stt = stt-ngaythang[temp.th-1];
    		temp.th++;
    	}
    	temp.ng = stt;
    	*this = temp;
    }
    
    void CNgay :: KhoiTao (long stt)
    {
    	int nam = 1;
    	int sn = 365;
    	while (stt - sn > 0)
    	{
    		stt = stt-sn;
    		nam++;
    		sn = 365;
    		CNgay temp (1,1,nam);
    		if( temp.ktNhuan() == 1)
    			sn = 366;
    	}
    }
    
     //dinh nghia ham KeTiep
    CNgay CNgay :: KeTiep ()
    {
    	long stt =  SoThuTu ();
    	stt = stt + 1;
    	CNgay temp ;
    	temp.KhoiTao (stt);
    	return temp;
    }



    Code:
    // 04.cpp : Defines the entry point for the console application.
    
    // viet chuong trinh nhap vao 1 ngay. Tim ngay hom qua va xuat ket qua
    
    #include <stdafx.h>
    #include <stdio.h>
    #include <conio.h>
    
    class CNgay
    {
    	private :
    			int ng;
    			int th;
    			int nm;
    	public :
    			void Nhap ();
    			void Xuat ();
    			CNgay TruocDo ();
    			int ktNhuan ();
    			int sttTrongNam ();
    			long SoThuTu ();
    			CNgay TimNgay (int,int);
    			CNgay TimNgay (long);
    			CNgay (int,int,int);
    };
    
    void main()
    {
    	CNgay a;
    	a.Nhap ();
    	CNgay kq = a.TruocDo ();
    	printf("Ngay ban dau:");
    	a.Xuat ();
    	printf("\n Ngay truoc do:");
    	a.Xuat ();
    }
    
    // dinh nghia ham Nhap
    void CNgay :: Nhap ()
    {
    	printf ("Nhap ngay : ");
    	scanf ("%d",&ng);
    	printf ("Nhap thang : ");
    	scanf ("%d",&th);
    	printf ("Nhap nam : ");
    	scanf ("%d",&nm);
    }
    
    // dinh nghia ham Xuat
    void CNgay :: Xuat ()
    {
    	printf ("\n Ngay:%d",ng);
    	printf ("\n Thang:%d",th);
    	printf ("\n Nam:%d",nm);
    }
    
    // dinh nghia ham ktNhuan
    int CNgay :: ktNhuan ()
    {
    	if (nm % 4 == 0 && nm % 100 != 0)
    		return 1;
    	if (nm % 400 == 0)
    		return 1;
    	return 0;
    }
    
    // dinh nghia ham TruocDo
    CNgay CNgay :: TruocDo ()
    {
    	int NgayThang[12]={31,28,31, 30,31,30,31,31,30,31,30,31};
    	if(CNgay :: ktNhuan() == 1)
    		NgayThang[1] = 29;
    		ng--;
    	if(ng == 0)
    	{
    		th--;
    		if(th == 0)
    		{
    			nm--;
    			th = 12;
    		}
    		ng = NgayThang[th-1];
    	}
    }
    
    // dinh nghia ham sttTrongNam
    int CNgay :: sttTrongNam ()
    {
    	int ngaythang[12] = {31,28,31, 30,31,30,31,31,30,31,30,31};
    	if (CNgay :: ktNhuan() == 1)
    		ngaythang[1] = 29;
    	int stt = 0;
    	for(int i = 1;i <= th-1;i++)
    		stt = stt + ngaythang[i-1];
    	return (stt + ng);
    }
    
    // dinh nghia ham SoThuTu
    long CNgay :: SoThuTu ()
    {
    	long stt = 0;
    	for(int i=1;i <= nm-1;i++)
    	{
    		stt = stt + 365;
    		CNgay temp (1,1,nm);
    		if (temp.ktNhuan() == 1)
    		stt = stt+1;
    	}
    	return (stt + CNgay::sttTrongNam());
    }
    
    // dinh nghia ham TimNgay
    CNgay CNgay :: TimNgay (int nam,int stt)
    {
    	int ngaythang[12] = {31,28,31, 30,31,30,31,31,30,31,30,31};
    	CNgay temp (1,1,nam);
    	if (temp.ktNhuan() == 1)
    		ngaythang[1] = 29;
    	temp.th=1;
    	while (stt-ngaythang[temp.th-1] > 0)
    	{
    		stt = stt-ngaythang[temp.th-1];
    		temp.th++;
    	}
    	temp.ng = stt;
    	return temp;
    }
    
    CNgay CNgay :: TimNgay (long stt)
    {
    	int nam = 1;
    	int sn = 365;
    	while (stt - sn > 0)
    	{
    		stt = stt – sn;
    		nam++;
    		sn = 365;
    		CNgay temp (1,1,nam);
    		if( temp.ktNhuan() == 1)
    			sn = 366;
    	} 
    	return TimNgay (nam,(int)stt);
    }
    Đã được chỉnh sửa lần cuối bởi namboygacon : 13-03-2012 lúc 09:06 PM.

  2. #2
    Ngày gia nhập
    05 2011
    Bài viết
    299

    chắc lính mới của khtn hả?
    vui lòng đọc lại nội quy + cho biết cái lỗi gì, hình thù, vóc dáng, tính cách nó ra sao.
    gửi code rồi nhờ người khác debug tìm lỗi dùm à
    Programming tutorials and source code examples

    Trong nhà không vợ không con
    Uống bia gặm thịt sao ngon thế này
    Nhậu nhẹt không bị la rầy
    Một tuần ta cứ bảy ngày " nâng ly "....

  3. #3
    Ngày gia nhập
    02 2012
    Nơi ở
    Xanhpetecbua-Nga
    Bài viết
    34

    bài bạn quá nhiều phương thức không cần thiết;
    mình sửa thế này luôn bạn tham khảo;
    C++ Code:
    1. // 02.cpp : Defines the entry point for the console application.
    2.  
    3. // viet chuong trinh nhap vao 1 ngay, tim ngay ke tiep va xuat ket qua
    4.  
    5. #include <iostream>
    6. #include <stdio.h>
    7. #include <conio.h>
    8.  
    9. using namespace std;
    10. class CNgay
    11. {
    12.     private:
    13.             int ng;
    14.             int th;
    15.             int nm;
    16.     public:
    17.             void Nhap ();
    18.             void Xuat ();
    19.             int ktNhuan ();
    20.             int ktNgay();
    21.             CNgay (int x=0,int y=0,int z=0)
    22.             {
    23.                   ng=x;th=y;nm=z;
    24.             }
    25.             CNgay KeTiep ();
    26.             CNgay Truoc();
    27. };
    28.  
    29. int main ()
    30. {
    31.     CNgay a,b;
    32.     a.Nhap ();
    33.     b=a;
    34.     if(a.ktNgay()==0) {printf("Sai ngay"); getch(); return 0;}
    35.     printf ("Ngay ban dau :\n");
    36.     a.Xuat();
    37.     printf ("\n Ngay ke tiep :\n");
    38.     a.KeTiep ();
    39.     a.Xuat();
    40.     printf("\n Ngay hom truoc:\n");
    41.     b.Truoc();
    42.     b.Xuat();
    43.     cout<<endl;
    44.     system("pause");
    45.     return 0;
    46. }
    47.  
    48. // dinh nghia ham Nhap
    49. void CNgay :: Nhap ()
    50. {
    51.     printf ("Nhap ngay : ");
    52.     scanf ("%d",&ng);
    53.     printf ("Nhap thang : ");
    54.     scanf ("%d",&th);
    55.     printf ("Nhap nam : ");
    56.     scanf ("%d",&nm);
    57. }
    58.  
    59. // dinh nghia ham Xuat
    60. void CNgay :: Xuat ()
    61. {
    62.     printf ("\n Ngay:%d",ng);
    63.     printf ("\n Thang:%d",th);
    64.     printf ("\n Nam:%d",nm);
    65. }
    66.  
    67. // dinh nghia ham ktNhuan
    68. int CNgay :: ktNhuan ()
    69. {
    70.     if (nm % 4 == 0 && nm % 100 != 0)
    71.         return 1;
    72.     if (nm % 400 == 0)
    73.         return 1;
    74.     return 0;
    75. }
    76. //kiem tra ngay
    77. int CNgay::ktNgay()
    78. {
    79.     int ngaythang[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    80.     if(ng>ngaythang[th-1])  return 0;
    81.     return 1;}
    82. // ngay ke tiep
    83.  
    84. CNgay CNgay::KeTiep()
    85. {
    86.       int ngaythang[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    87.       int d;
    88.       d=ktNhuan();
    89.       if(d==1) ngaythang[1]=29;
    90.      
    91.       ng++;
    92.       if(ng>ngaythang[th-1])
    93.       {
    94.               th++;
    95.               ng=1;
    96.              
    97.               if(th>12)
    98.               {
    99.                       th=1;
    100.                       nm++;
    101.               }
    102.       }
    103.      
    104.  
    105. }
    106. CNgay CNgay::Truoc()
    107. {
    108.       int ngaythang[12]={31,28,31,30,31,30,31,31,30,31,30,31};
    109.       int d;
    110.       d=ktNhuan();
    111.       if(d==1) ngaythang[1]=29;
    112.      
    113.       ng--;
    114.       if(ng<1)
    115.       {
    116.               th--;
    117.               ng=ngaythang[th-1];
    118.              
    119.               if(th<1)
    120.               {
    121.                       th=12;
    122.                       nm--;
    123.                       ng=ngaythang[th-1];
    124.               }
    125.       }
    126. }
    Đã được chỉnh sửa lần cuối bởi buithetai : 13-03-2012 lúc 11:04 PM.

  4. #4
    Ngày gia nhập
    04 2010
    Bài viết
    1,534

    Lớp gì mà hàm nào hàm nấy rời ra từng cụm, chẳng thấy liên lạc gì với nhau cả.
    Nếu chỉ muốn như vậy thì thiết kế lớp làm chi cho mất công. Cứ viết một nhóm hàm làm việc được rồi.

    C Code:
    1. // 02.cpp : Defines the entry point for the console application.
    2.  
    3. // viet chuong trinh nhap vao 1 ngay, tim ngay ke tiep va xuat ket qua
    4.  
    5. #include <iostream>
    6. #include <stdio.h>
    7. #include <conio.h>
    8.  
    9. using namespace std;
    10. class CNgay
    11. {
    12.     private:
    13.             int ng;
    14.             int th;
    15.             int nm;
    16.             int SoNgayTrongThang();
    17.             int SoNgayTrongThang(int, int);
    18.     public:
    19.             void Nhap ();
    20.             void Xuat ();
    21.             int ktNhuan ();
    22.             int ktNgay();
    23.             CNgay (int x=1,int y=1,int z=0): ng=(x), th(y), nm(z) { } // dùng initializer list cho tiện
    24.             CNgay KeTiep();
    25.             CNgay Truoc();
    26. };
    27.  
    28. int main ()
    29. {
    30.     CNgay a;
    31.     a.Nhap();
    32.     if (!a.ktNgay()) {printf("Sai ngay"); getch(); return 0;}
    33.     printf ("Ngay ban dau :\n");
    34.     a.Xuat();
    35.     printf ("\n Ngay ke tiep :\n");
    36.     (a.KeTiep()).Xuat();
    37.     printf("\n Ngay hom truoc:\n");
    38.     (a.Truoc()).Xuat();
    39.     cout<<endl;
    40.     system("pause");
    41.     return 0;
    42. }
    43.  
    44. // dinh nghia ham tinh so ngay trong thang
    45. int CNgay :: SoNgayTrongThang(int t, int n)
    46. {
    47.   switch (t)
    48.   {
    49.     case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31;
    50.     case 4: case 6: case 9: case 11: return 30;
    51.     case 2: return (n % 4 || n % 100 == 0 && n % 400 )? 28 : 29;
    52.   }
    53.   return 0;
    54. }
    55.  
    56. int CNgay :: SoNgayTrongThang()
    57. {
    58.   return SoNgayTrongThang(th, nm);
    59. }
    60.  
    61. // dinh nghia ham Nhap
    62. void CNgay :: Nhap ()
    63. {
    64.     printf ("Nhap ngay : ");
    65.     scanf ("%d",&ng);
    66.     printf ("Nhap thang : ");
    67.     scanf ("%d",&th);
    68.     printf ("Nhap nam : ");
    69.     scanf ("%d",&nm);
    70. }
    71.  
    72. // dinh nghia ham Xuat
    73. void CNgay :: Xuat ()
    74. {
    75.     printf ("\n Ngay:%d",ng);
    76.     printf ("\n Thang:%d",th);
    77.     printf ("\n Nam:%d",nm);
    78. }
    79.  
    80. // dinh nghia ham ktNhuan
    81. int CNgay :: ktNhuan ()
    82. {
    83.   return (SoNgayTrongThang() == 29);
    84. }
    85.  
    86. //kiem tra ngay
    87. int CNgay::ktNgay()
    88. {
    89.     return (ng > 0 && ng<=SoNgayTrongThang());
    90. }
    91.  
    92. // tính ngay ke tiep
    93. CNgay CNgay::KeTiep()
    94. {
    95.   int ng1 = ng+1, th1 = th, nm1 = nm;
    96.   if (ng1 > SoNgayTrongThang(th1, nm1))
    97.   {
    98.     ng1 = 1;
    99.     th1++;
    100.     if (th1 > 12)
    101.     {
    102.       th1 = 1;
    103.       nm1++;
    104.     }
    105.   }
    106.   return CNgay(ng1,th1,nm1);
    107. }
    108.  
    109. // tinh ngay truoc do
    110. CNgay CNgay::Truoc()
    111. {
    112.   int ng1 = ng-1, th1 = th, nm1 = nm;
    113.   if (ng1 <= 0)
    114.   {
    115.     th1--;
    116.     if (th1 < 1)
    117.     {
    118.       th1 = 12;
    119.       nm1--;
    120.     }
    121.     ng1 = SoNgayTrongThang(th1, nm1);
    122.   }
    123.   return CNgay(ng1,th1,nm1);
    124. }

  5. #5
    Ngày gia nhập
    02 2012
    Nơi ở
    Xanhpetecbua-Nga
    Bài viết
    34

    cám ơn anh đã nhắc nhở,

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

  1. Giáo viên nhận dạy kèm tiếng anh giao tiếp tại TPHCM hoặc Toeic
    Gửi bởi phi60801530 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 1
    Bài viết cuối: 11-02-2017, 09:10 PM
  2. Dịch vụ dịch tiếng Việt sang tiếng Nhật
    Gửi bởi icslawvn trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 04-09-2013, 03:30 PM
  3. Dịch Thuật tiếng Nhật Bản sang tiếng việt chuyên nghiệp
    Gửi bởi ketnoits2012 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 07-11-2012, 09:37 AM
  4. Dịch vụ dịch tiếng nhật sang tiếng việt giá rẻ nhất việt nam
    Gửi bởi thachdinh908 trong diễn đàn Giới thiệu website, sản phẩm của bạn
    Trả lời: 0
    Bài viết cuối: 14-09-2012, 10:10 AM
  5. Hà Nội Tuyển lập trình viên biết tiếng Nhật (BSE), có khả năng giao tiếp với người Nhật
    Gửi bởi kimbap trong diễn đàn Tuyển dụng - Việc làm CNTT
    Trả lời: 0
    Bài viết cuối: 19-07-2012, 11:16 AM

Tags của đề tài này

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