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

Đề tài: Cộng thêm một số vào một ngày tháng năm cho trước

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

    Mặc định Cộng thêm một số vào một ngày tháng năm cho trước

    em muốn cộng một số nguyên vào một ngày tháng năm ra trước hàm sẽ trả về một ngày tháng năm, em dùng hàm tải bội, mấy anh giúp em hướng giải bài này với. em đã làm được bài cộng 1 ngày, trừ 1 ngày ok rùi.

  2. #2
    Ngày gia nhập
    09 2007
    Bài viết
    724

    nếu cộng trừ một ngày được rồi thì cộng n ngày chỉ việc for tới n rồi cộng dồn lại thôi.

  3. #3
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    uh, chỉ việc cộng lại rồi tính toán lại ngày tháng năm cho nó hợp lí

  4. #4
    Ngày gia nhập
    10 2007
    Nơi ở
    HCM
    Bài viết
    46

    Như vậy thì chương trình chạy hơi lâu đó
    Cách dưới đây mình đang dùng có vẻ tốt hơn cách của bạn, yêu cầu ban đầu x>0, TH x<0 bạn tự giải quyết thử xem (hơi lý thú đó)

    __Trước hết bạn cần có hàm lấy số ngày của 1 tháng trong năm, ở đây mình tạm gọi là NoDayOfMonth(month)
    __Cho biến ngày (result) nhảy tới cuối tháng hiện tại thông quá việc trừ số ngày cần cộng (biến x) một khoảng bằng Số Ngày của Tháng Hiện Tại trừ cho ngày của biến ngày ==> x = x - (NoDayOfMonth(result.month) - result.day);
    __Sử dụng vòng lặp while với đk x>0 thì tăng tháng của result lên 1 (nếu gặp tháng 12 thì cho trở về tháng 1) đồng thời trừ đi x một số bằng số ngày của tháng đó
    __Cuối cùng gán ngày result.day = x + NodayOfMonth(month)

    Code Demo
    C++ Code:
    1.     x = x - (NoDayOfMonth(result.month) - result.day);//last day of month
    2.     //go to next month
    3.     while(x > 0)
    4.     {
    5.         result.month++;
    6.         if(result.month>12)
    7.         {
    8.             result.month = 1;
    9.             result.year++;
    10.         }
    11.         x = x - NoDayOfMonth(result.month);
    12.     }
    13.     result.day = x + NoDayOfMonth(result);
    Đã được chỉnh sửa lần cuối bởi halohcm : 29-10-2008 lúc 10:18 PM.

  5. #5
    Ngày gia nhập
    10 2006
    Nơi ở
    In Your Bugs
    Bài viết
    823

    Mình nghĩ thế này, cũng không lâu đâu

    gọi nAddDay là ngày thêm vào thì :

    if(nAddDay > nYearDay ) // Số ngày trong năm hiện tại
    {
    int temp = nAddDay%nYearDay
    Year += temp;
    nAddDay -= temp*nYearDay;
    }
    Tương tự cho month,day
    Đã được chỉnh sửa lần cuối bởi kidkid : 29-10-2008 lúc 10:27 PM.

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

    Mặc định Cộng thêm một số vào một ngày tháng năm cho trước

    Lâu rùi mình mới lên lại 4rum, cái bài này bữa trước mình hỏi, nhưng cuối cùng cũng ngâm cứu được, dù sao cũng thanks mọi người đã góp ý giúp đỡ..
    Code:
    Date Date:: operator +(int k)
        {
           d=d+k;
    	  while(d>=songay(y))
    		{
    		  if( songay(y)==366)
    		    d-=366;
    		  else
    		    d-=365;
    		  y++;
    		}
    		while(d==0)
    		{
    		   d=dayin(m-1);
    		   m--;
    		}
    		while(m>12)
    		{
    		   m-=12;
    		   y++;
    		}
    		while(d>dayin(m))
    		{
    		   d-=dayin(m);
    		   m++;
    		   while(m>12)
    		   {
    		     m-=12;
    		     y=y+1;
    		   }
    		}
    	return *this;
         }

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

  1. code C# thêm ngày tháng năm lên CSDL
    Gửi bởi tranvantoan trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 1
    Bài viết cuối: 18-03-2013, 10:54 AM
  2. Không khí Tết thêm rộn ràng khi mua bếp từ đôi Việt Hàn - Khuyến mại cuối năm hấp dẫn
    Gửi bởi docavn01 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: 18-02-2013, 03:23 PM
  3. Không khí Tết thêm rộn ràng khi mua bếp từ đôi Việt Hàn - Khuyến mại cuối năm hấp dẫn
    Gửi bởi docavn01 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: 06-02-2013, 09:10 AM
  4. thêm 1 bài toán Olympic Sv năm 2008, tìm an của dãy số cho trước
    Gửi bởi hienclubvn trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 26-06-2010, 09:07 AM

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