Information Technology VietNam

Bạn có muốn phản ứng với tin nhắn này? Vui lòng đăng ký diễn đàn trong một vài cú nhấp chuột hoặc đăng nhập để tiếp tục.

    Cac Ham xu li Class NGAY trong C

    hoangnhut24ht_banking
    hoangnhut24ht_banking
    New Member
    New Member


    Giới tính : Nam Bài gửi : 3
    Tổng Điểm : 20
    Điểm Thưởng : 2
    Sinh Nhật : 08/01/1990 Bị Dụ Dỗ : 12/09/2009
    Tuổi : 34

    Cac Ham xu li Class NGAY trong C Empty Cac Ham xu li Class NGAY trong C

    Bài gửi by hoangnhut24ht_banking 26/9/2009, 13:02

    Code:
                            //CAC HAM XU LI NGAY
    #include<conio.h>
    #include<stdio.h>
    #include<string.h>
    #include<stdlib.h>
    class ngay
    {
     private:
      int d,m,y;          //day,month,year
     public:
      //KHAI BAO HAM:
      ngay();
      ngay(int pd,int pm,int py);
      ngay(char *sngay);
      void nhapd(int pd);
      void nhapm(int pm);
      void nhapy(int py);
      void nhapdmy(int pd,int pm,int py);
      void nhapdmy(char *sngay);    //nhap ngay dang chuoi
      int docd();
      int docm();
      int docy();
      char *docdmy();
      void docDMY();
      int sngaycuathang(int pm,int py);
      ngay ngaytruoc();
      ngay ngaysau();
      ngay operator -(int pn);  //ngay tru so
      ngay operator +(int pn);
      int operator -(ngay pngay); //ngay tru ngay
      int namnhuan(int py);
      ~ngay();
    };
        // CAI DAT HAM:
        //HAM KHOI TAO:
    ngay::ngay()
    {
     d=1;
     m=1;
     y=1900;
    }
    ngay::ngay(int pd,int pm,int py)
    {
     d=pd;
     m=pm;
     y=py;
    }
    ngay::ngay(char *sngay)
    {
     d=atoi(strtok(sngay,"/"));
     m=atoi(strtok(NULL,"/"));
     y=atoi(strtok(NULL,"/"));
    }
        //HAM CAP NHAT:
    void ngay::nhapd(int pd)
    {
     d=pd;
    }
    void ngay::nhapm(int pm)
    {
     m=pm;
    }
    void ngay::nhapy(int py)
    {
     y=py;
    }
    void ngay::nhapdmy(int pd,int pm,int py)
    {
     d=pd;
     m=pm;
     y=py;
    }
    void ngay::nhapdmy(char *sngay)
    {
     d=atoi(strtok(sngay,"/"));
     m=atoi(strtok(NULL,"/"));
     y=atoi(strtok(NULL,"/"));
    }
      //HAM CUNG CAP THONG TIN:
    int ngay::docd()
    {
     return d;
    }
    int ngay::docm()
    {
     return m;
    }
    int ngay::docy()
    {
     return y;
    }
    void ngay::docDMY()
    {
     printf("%i/%i/%i\n",d,m,y);
    }
    char *ngay::docdmy()
    {
     char dl[5],*s;
     s=new char[15];
     strcpy(s,itoa(d,dl,10));
     strcat(s,"/");
     strcat(s,itoa(m,dl,10));
     strcat(s,"/");
     strcat(s,itoa(y,dl,10));
     return s;
    }
      //HAM TINH TOAN:
    int ngay::sngaycuathang(int pm,int py)
    {
     int sn;
     int namthuong[12]={31,28,31,30,31,30,31,31,30,31,30,31};
     int namnhuan[12]={31,29,31,30,31,30,31,31,30,31,30,31};
     if(py%400==0||(py%4==0&&py%100!=0))
      sn=namnhuan[pm-1];
     else
      sn=namthuong[pm-1];
     return sn;
    }
    ngay ngay::ngaytruoc()
    {
     ngay kq(d,m,y);
     kq.d=d-1;
     if(kq.d<1)
     { if(m==1)
      { kq.d=31;
      kq.m=12;
      kq.y=y-1;
      }
      else
      { if(kq.m==2||kq.m==4||kq.m==6||kq.m==8||kq.m==9||kq.m==11)
      { kq.d=31;
        kq.m=m-1;
        kq.y=y;
      }
      else
      { kq.d=30;
        kq.m=m-1;
        kq.y=y;
      }
      }
     }
     else
     { kq.m=m;
      kq.y=y;
     }
     return kq;
    }
    ngay ngay::ngaysau()
    {
     ngay kq(d,m,y);
     kq.d=d+1;
     if(kq.d>kq.sngaycuathang(m,y))
     {      if(kq.m==12)
      { kq.d=1;
      kq.m=1;
      kq.y=y+1;
      }
      else
      { kq.d=1;
      kq.m=m+1;
      kq.y=y;
      }
     }
     else
     { kq.m=m;
      kq.y=y;
     }
     return kq;
    }
    ngay ngay::operator +(int pn)
    {
     ngay kq(d,m,y);
     for(int i=0;i<pn;i++)
      kq=kq.ngaysau();
     return kq;
    }
    ngay ngay::operator -(int pn)
    {
     ngay kq(d,m,y);
     for(int i=0;i<pn;i++)
      kq=kq.ngaytruoc();
     return kq;
    }
    int ngay::operator -(ngay pngay)
    {
     int t=0;
     while(pngay.d!=d||pngay.m!=m||pngay.y!=y)
     {
      pngay=pngay.ngaysau();
      t++;
            }
     return t;
    }
      //HAM PHA HUY
    ngay::~ngay()
    {
          // printf("I Love U \n");
    }
          //CHUONG TRINH CHINH:
    void main()
    {
     clrscr();
     ngay ng1(1,1,2009),ng2("31/12/2009"),ng3("7/8/2009"),ng4,ng5;
     ng4=ng1.ngaytruoc();
     printf("\nngay truoc cua ngay: %s la:  ",ng1.docdmy());
     ng4.docDMY();
     ng4=ng2.ngaysau();
     printf("\nngay sau cua ngay: %s la: %s \n",ng2.docdmy(),ng4.docdmy());
     ng4=ng3.ngaytruoc();
     printf("\nngay truoc cua ngay: %s la: %s\n",ng3.docdmy(),ng4.docdmy());
     ng4=ng3.ngaysau();
     printf("\nngay sau cua ngay: %s la: %s \n",ng3.docdmy(),ng4.docdmy());
     ng4=ng1+4;
     printf("\nngay %s +4 la:  %s \n",ng1.docdmy(),ng4.docdmy());
     ng4=ng3-7;
     printf("\nngay %s -7 la: %s \n",ng3.docdmy(),ng4.docdmy());
     ng5=ng4;
     printf("\nngay %s - %s = %i",ng3.docdmy(),ng5.docdmy(),(ng3-ng5));
     getch();
    }

      Hôm nay: 25/11/2024, 15:39