Trang 1 trên tổng số 2 12 Cuối cùngCuối cùng
Từ 1 tới 10 trên tổng số 14 kết quả

Đề tài: liên quan ngày tháng năm

  1. #1
    Ngày gia nhập
    05 2007
    Bài viết
    0

    Question liên quan ngày tháng năm

    mình đang phải làm bài tập trên C++ liên quan đến ngày tháng năm.
    cộng với một số nguyên vào ngày, nhưng mình chưa biết cách kiểm tra sao để khi ta cộng số nguyên đó vào ngày mà nếu quá ngày của tháng đó thì ta phải tăng tháng lên, quá 12 tháng thì ta phải tăng năm.có ai biết thì giúp mình đoạn code này nhé.
    cảm ơn mọi người nhiều.

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

    uhm Chúng mình sẽ nêu những suy nghĩ lên đây và cậu hãy biến chúng thành code của mình nếu không được tụi mình sẽ giúp ok .

    Giả sử ban đầu cậu có tổng số ngày là x , bây giờ người ta sẽ nhập số ngày n cần cộng thì cậu sẽ có số ngày là x = x +n : bay giờ từ số ngày này cậu sẽ chuyển sang số năm và tháng như sau :
    int năm = x/365 :
    int tháng = (x%365)/30 :
    int ngay = x - năm - thang :

    Theo suy nghĩ của mình thì cách trên là khá ổn tuy nhiên có thể có sai sót hoặc cách khác hay hơn . Cậu cứ làm thử rồi cho ý kiến nhé :

    * Huynh nào move hộ bài này sang mục hỏi đáp giúp nhé !

  3. #3
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Code:
    /*
    Program Class date  ·  Date: 10/01/2007
    -------------------------------------------------------------
    
    VU THANH NAM - CONG NGHE THANG LONG
    MA SV: A0707
    Copyright (C) 2007 - All Rights Reserved
    
    ***************************************************************
    */
    #include <iostream.h>
    #include <conio.h>
    #include <math.h>
    #include <stdlib.h>
    #include <windows.h>
    int songay(int m,int y);
    void chaychu()
    {
    	int i;
    	char GioiThieu[100] = "Toi la Vu Thanh Nam day la Lop date cua toi\n";
    	for(i = 0; i < 2; i++) cout<<"\n";
    	for(i = 0; i < 5; i++) cout<<" ";
    	for(i = 0; i < 50; i++)
    	{
    		cout<<GioiThieu[i];
    		Sleep(60);
    		cout.flush();
    	}
    }
    class date
    {
    	private:
       	int d;
          int m;
          int y;
       public:
       	void setdate(int ngay);
          int getdate();
          void setmonth(int thang);
          int getmonth();
          void setyear(int nam);
          int getyear();
       	int sosanh(date s)const;
          date cong1ngay()const;
          int tinhsongay(date);
    };
    
    void date::setdate(int ngay) ////////////////////
    {
     	d = ngay;
    };
    
    int date::getdate() ////////////////
    {
      	return d;
    };
    
    void date::setmonth(int thang) ///////////////////
    {
     	m = thang;
    };
    
    int date::getmonth()   ////////////////////
    {
      	return m;
    };
    
    void date::setyear(int nam) /////////////////////////
    {
     	y = nam;
    }
    
    int date::getyear()//////////////////////
    {
      	return y;
    };
    
    int date::sosanh(date s)const// ham so sanh /////////////////
    {
       if(y < s.y || (y == s.y &&  m < s.m )||(y == s.y && m == s.m && d < s.d))
       	return -1;
       else
        	{
           	if(y > s.y ||(y == s.y && m > s.m) ||(y == s.y && m == s.m && d > s.d))
             	return 1;
             else
             	return 0;
          }
    };
    
    date date::cong1ngay()const          //ham cong mot ngay/////////////////
    {
      	date kq;
       if(d == songay(m,y))
       {
       	kq.d = 1;
          if(m == 12)
          {
           	kq.y = y + 1;
             kq.m = 1;
          }
          else
          {
           	kq.m = m +1;
             kq.y = y;
          }
       }
       else
       {
        	kq.d = d + 1;
          kq.m = m;
          kq.y = y;
       }
       return kq;
    };
    
    int date::tinhsongay(date t2)     // ham tinh so ngay///////////////////////
    {
    	date t1;
       date min,max;
       int date,month,year;
       cout<<"\nNhap vao ngay thang nam cua moc thu 1: ";
          do
          {
       		cout<<"\n\tNhap vao ngay: ";
       		cin>>date;
       		t2.setdate(date);
          }while(date < 1 || date> 31);
          do
          {
       		cout<<"\tNhap vao thang: ";
       		cin>>month;
       		t2.setmonth(month);
          }while(month < 1 || month>12);
          cout<<"\tNhap vao nam: ";
          cin>>year;
          t2.setyear(year);
       cout<<"\nNhap vao ngay thang nam cua moc thu 2: ";
          do
          {
       		cout<<"\n\tNhap vao ngay: ";
       		cin>>date;
       		t1.setdate(date);
          }while(date < 1 || date> 31);
          do
          {
       		cout<<"\tNhap vao thang: ";
       		cin>>month;
       		t1.setmonth(month);
          }while(month < 1 || month>12);
          cout<<"\tNhap vao nam: ";
          cin>>year;
          t1.setyear(year);
       if(t1.sosanh(t2) == -1)
       {
        	min = t1;
          max = t2;
       }
       else
       {
        	max = t1;
          min = t2;
       }
       int dem = 0;
       double snam;
       int sthang, sngay ;
       while(min.sosanh(max)== -1)
       {
         	min = min.cong1ngay();
          dem++;
       }
       if(t2.getyear() < t1.getyear())//////////////////////////////////////////////
       {                              //tinh so ngay so thang so nam da qua
       	if( t2.getmonth() > t1.getmonth() ) //////////////////////
       	{
          	if( t2.getdate() == t1.getdate())
             {
       			sthang = t1.getmonth() + 12 - t2.getmonth();
                sngay = 0;
                snam = t1.getyear() - t2.getyear() - 1;
             }
             if( t2.getdate() > t1.getdate() ) //
             {
              	sthang = t1.getmonth() + 11 - t2.getmonth();
                if(t1.getmonth() == 1)
                	sngay = 31 - t2.getdate()  + t1.getdate();//?????????????????????????????????
                else
                	sngay = songay((t1.getmonth() - 1),t1.getyear()) - t2.getdate()  + t1.getdate();
                snam = t1.getyear() - t2.getyear() - 1;
             }
             if( t2.getdate() < t1.getdate() )
             {
              	sthang = t1.getmonth() + 12 - t2.getmonth();
                sngay = t1.getdate() - t2.getdate();
                snam = t1.getyear() - t2.getyear() - 1;
             }
       	}
          if( t2.getmonth() < t1.getmonth() )  ////////////////////////////////////
          {
          	if( t2.getdate() == t1.getdate())
             {
       			sthang = t1.getmonth() - t2.getmonth();
                sngay = 0;
                snam = t1.getyear() - t2.getyear();
             }
             if( t2.getdate() > t1.getdate() )
             {
              	sthang = t1.getmonth() - t2.getmonth() - 1;
                sngay = songay((t1.getmonth() - 1),t1.getyear()) - t2.getdate() + t1.getdate();
                snam = t1.getyear() - t2.getyear();
             }
             if( t2.getdate() < t1.getdate() )
             {
              	sthang = t1.getmonth() - t2.getmonth();
                sngay = t1.getdate() - t2.getdate();
                snam = t1.getyear() - t2.getyear();
             }
          }
          if(t2.getmonth() == t1.getmonth())    ///////////////////////////////////////
          {
          		if( t2.getdate() == t1.getdate())
             {
       			sthang = 0;
                sngay = 0;
                snam = t1.getyear() - t2.getyear();
             }
             if( t2.getdate() > t1.getdate() ) //
             {
              	sthang = 11;
                sngay = songay((t1.getmonth() - 1),t1.getyear()) - t2.getdate() + t1.getdate();
                snam = t1.getyear() - t2.getyear() - 1;
    
             }
             if( t2.getdate() < t1.getdate() )
             {
              	sthang = 0;
                sngay = t1.getdate() - t2.getdate();
                snam = t1.getyear() - t2.getyear()  ;
             }
          }
       }
    ////////////////////////////////////////////////////////////////////////////////////////////////
       if(t2.getyear() > t1.getyear()) /////////////////////////////////////////////
       {                               //tinh so ngay so thang so nam da qua
       	if( t1.getmonth() > t2.getmonth() ) ///////////////////////////
       	{
          	if( t1.getdate() == t2.getdate())
             {
       			sthang = t2.getmonth() + 12 - t1.getmonth();
                sngay = 0;
                snam = t2.getyear() - t1.getyear() - 1  ;
             }
             if( t1.getdate() > t2.getdate() ) //
             {
              	sthang = t2.getmonth() + 11 - t1.getmonth();
                if(t2.getmonth() == 1)
                	sngay = songay(12,t1.getyear()) - t1.getdate()  + t2.getdate(); //????????????????????
                else
                	sngay = songay((t2.getmonth() - 1),t2.getyear()) - t1.getdate()  + t2.getdate();
                snam = t2.getyear() - t1.getyear() - 1;
             }
             if( t1.getdate() < t2.getdate() )
             {
              	sthang = t2.getmonth() + 12 - t1.getmonth();
                sngay = t2.getdate() - t1.getdate();
                snam = t2.getyear() - t1.getyear() - 1;
             }
       	}
          if( t1.getmonth() < t2.getmonth() ) ////////////////////////////
          {
          	if( t1.getdate() == t2.getdate())
             {
       			sthang = t2.getmonth() - t1.getmonth();
                sngay = 0;
                snam = t2.getyear() - t1.getyear();
             }
             if( t1.getdate() > t2.getdate() )
             {
              	sthang = t2.getmonth() - t1.getmonth() - 1;
                sngay = songay((t2.getmonth() - 1),t2.getyear()) - t1.getdate() + t2.getdate();
                snam = t2.getyear() - t1.getyear();
             }
             if( t1.getdate() < t2.getdate() )
             {
              	sthang = t2.getmonth() - t1.getmonth();
                sngay = t2.getdate() - t1.getdate();
                snam = t2.getyear() - t1.getyear();
             }
          }
          if(t1.getmonth() == t2.getmonth()) //////////////////////////////////
          {
          	if( t1.getdate() == t2.getdate())
             {
       			sthang = 0;
                sngay = 0;
                snam = t2.getyear() - t1.getyear();
             }
             if( t1.getdate() > t2.getdate() )
             {
              	sthang = 11;
                sngay = songay((t2.getmonth() - 1),t2.getyear()) - t1.getdate() + t2.getdate();
                snam = t2.getyear() - t1.getyear() - 1;
             }
             if( t1.getdate() < t2.getdate() )
             {
              	sthang = 0;
                sngay = t2.getdate() - t1.getdate();
                snam = t2.getyear() - t1.getyear();
             }
          }
       }
    
       if(t2.getyear() == t1.getyear()) /////////////////////////////////////////////
       {                               //tinh so ngay so thang so nam da qua
       	if( t1.getmonth() > t2.getmonth() ) ///////////////////////
       	{
          	if( t1.getdate() == t2.getdate())
             {
       			sthang = t1.getmonth() - t2.getmonth();
                sngay = 0;
                snam = 0  ;
             }
             if( t1.getdate() > t2.getdate() )
             {
              	sthang = t1.getmonth() - t2.getmonth() ;
                sngay = t1.getdate() - t2.getdate();
                snam = 0;
             }
             if( t1.getdate() < t2.getdate() )
             {
              	sthang = t1.getmonth() - t2.getmonth() - 1;
                sngay = songay((t1.getmonth()-1),t1.getyear()) - t2.getdate() + t1.getdate(); //////////
                snam = 0;
             }
       	}
          if( t1.getmonth() < t2.getmonth() ) ///////////////////////////////
          {
          	if( t1.getdate() == t2.getdate())//
             {
       			sthang = t2.getmonth() - t1.getmonth();
                sngay = 0;
                snam = 0;
             }
             if( t1.getdate() > t2.getdate() ) //
             {
              	sthang = t2.getmonth() - t1.getmonth() - 1 ;
                sngay = songay((t2.getmonth() - 1),t2.getyear()) - t1.getdate() + t2.getdate();
                snam = 0;
             }
             if( t1.getdate() < t2.getdate() )
             {
              	sthang = t2.getmonth() - t1.getmonth() ;
                sngay = t2.getdate() - t1.getdate();
                snam = 0;
             }
          }
          if(t1.getmonth() == t2.getmonth()) /////////////////////////////////
          {
          	if( t1.getdate() == t2.getdate())
             {
       			sthang = 0;
                sngay = 0;
                snam = 0;
             }
             if( t1.getdate() > t2.getdate() )
             {
              	sthang = 0;
                sngay = t1.getdate() - t2.getdate();
                snam = 0;
             }
             if( t1.getdate() < t2.getdate() )
             {
              	sthang = 0;
                sngay = t2.getdate() - t1.getdate();
                snam = 0;
             }
          }
       }
    
       cout<<"\nVay da duoc "<<snam<<" nam "<<sthang<<" thang "<<sngay<<" ngay";
       cout<<"\nVa so ngay tu "<<t2.getdate()<<"/"<<t2.getmonth()<<"/"<<t2.getyear();
       cout<<" den ngay "<<t1.getdate()<<"/"<<t1.getmonth()<<"/"<<t1.getyear()<<" la: ";
       return dem;
    };
    
    int songay(int m,int y)          //ham tinh so ngay trong 1 thang trong 1 nam bat ky
    {
     	switch(m)
       {
       	case 1:
       	case 3:
          case 5:
          case 7:
          case 8:
          case 10:
          case 12:
          	return 31;
          case 2:
          	if((y%4==0&&y%100!=0)||(y%400==0))
             	return 29;
             else
             	return 28;
          case 4:
          case 6:
          case 9:
          case 11:
          	return 30;
       }
       return 0;
    }
    
    void main()
    {
    	system("color 3a");
    	date d;
       chaychu();
       char chon;
       do
       {
       	cout<<d.tinhsongay(d);
          cout<<" ngay ";
          cout<<"\n\nBan co muon tiep tuc khong (y/n) : ";
          cin>>chon;
          system("cls");
       }while(chon == 'y');
       cout<<"\nThanh Nam thank you used program (Press Enter to exit)";
       getch();
    } 	//Phu` cuoi cung` cung da~ song met qua
    Đấy là chương trình tính số ngày ( bao nhiêu ngày bao nhiêu tháng bao nhiêu năm và tổng số ngày).
    Mình làm từ mấy tháng trước chưa tối ưu lại mã nguồn. Nhưng cái vấn đề của cậu thì có cả trong này đấy.
    Trong này mình có sử dụng một hàm chạy chữ khá hay.
    Đã được chỉnh sửa lần cuối bởi iamvtn : 05-05-2007 lúc 05:31 PM.

  4. #4
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Code:
    int date::sosanh(date s)const// ham so sanh /////////////////
    {
       if(y < s.y || (y == s.y &&  m < s.m )||(y == s.y && m == s.m && d < s.d))
       	return -1;
       else
        	{
           	if(y > s.y ||(y == s.y && m > s.m) ||(y == s.y && m == s.m && d > s.d))
             	return 1;
             else
             	return 0;
          }
    };
    
    date date::cong1ngay()const          //ham cong mot ngay/////////////////
    {
      	date kq;
       if(d == songay(m,y))
       {
       	kq.d = 1;
          if(m == 12)
          {
           	kq.y = y + 1;
             kq.m = 1;
          }
          else
          {
           	kq.m = m +1;
             kq.y = y;
          }
       }
       else
       {
        	kq.d = d + 1;
          kq.m = m;
          kq.y = y;
       }
       return kq;
    };
    Hàm cộng một ngày và hàm so sánh là linh hồn của bài tập này.

  5. #5
    Ngày gia nhập
    04 2007
    Bài viết
    16

    mình chưa đọc hết nhưng mình thấy bạn làm quá tệ
    code quá dài
    nhìn nhức cả mắt

  6. #6
    Ngày gia nhập
    01 2007
    Nơi ở
    Somewhere I belong
    Bài viết
    168

    Mặc định liên quan ngày tháng năm

    Hề vậy bạn có cách nào hay thì up lên nhá, code dài thật đấy nhưng cậu chạy thử chưa. Và tiện thể cho mình hỏi cách rút ngắn code đi nhá, bài này mình lằm hồi mới học về class nên chưa có kinh nghiệm. Bạn chỉ cho mình cách làm không tệ nhá. Bài này của tớ không đơn thuần như câu hỏi cậu bên trên đâu, bạn cứ chạy thử rồi cho thêm ý kiến nhá.

  7. #7
    Ngày gia nhập
    05 2007
    Bài viết
    0

    uh mình cảm ơn mọi người đã dành thời gian giúp đỡ mình nha.

  8. #8
    Ngày gia nhập
    05 2007
    Bài viết
    0

    ùh Mình đã Chạy Thử Bài Rùi, Một Lần Nữa Cảm ơn Mọi Người Nhé. Mình Cũng chỉ mới học C++ nên có gì mong mọi người chỉ bảo thêm nhé.

  9. #9
    Ngày gia nhập
    07 2006
    Bài viết
    121

    Trích dẫn Nguyên bản được gửi bởi nicolasman Xem bài viết
    mình chưa đọc hết nhưng mình thấy bạn làm quá tệ
    code quá dài
    nhìn nhức cả mắt
    Hãy chứng tỏ mình không tệ hơn đi. Cậu đừng spam nha! Nếu code cậu hay xin hãy post lên cho mọi người cùng xem.

    OoShinHaoO

  10. #10
    Ngày gia nhập
    05 2007
    Bài viết
    0

    Thumbs up okkkkk

    uh, mình cũng nghĩ như shinichi_haha vậy, lời nói nên đi kèm với hành động--> để mọi người thấy những gì nicolasman nói là thật thì bạn nên cho mọi người thấy ý kiến của bạn để mọi người học hỏi thêm ở nhau nhé

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

  1. Hướng dẫn lấy địa chỉ IP và các thông tin liên quan
    Gửi bởi tinhthanhiepsi9x trong diễn đàn Tutorials và Thủ thuật lập trình C#, ASP.NET
    Trả lời: 0
    Bài viết cuối: 27-11-2012, 09:00 PM
  2. Lập trình C vấn đề liên quan đến đặc tả??
    Gửi bởi gyghung trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 7
    Bài viết cuối: 18-06-2012, 10:41 PM
  3. các bài liên quan đền đồ thị (mọi ngườ help em về ý tưởng với)
    Gửi bởi newbievnn 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: 03-12-2009, 06:00 AM
  4. Những thông tin liên quan đến HDH
    Gửi bởi lucky_little trong diễn đàn Thắc mắc chung
    Trả lời: 2
    Bài viết cuối: 05-09-2009, 09:40 AM
  5. Lỗi liên quan đến con trỏ
    Gửi bởi mrpro271 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 1
    Bài viết cuối: 10-07-2009, 07:35 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