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

Đề tài: Xây dựng lớp Date trong lập trình C++. Lỗi tùm lum không biết sửa thế nào?

  1. #1
    No Avatar
    ViBi Khách

    Mặc định Xây dựng lớp Date trong lập trình C++. Lỗi tùm lum không biết sửa thế nào?

    "Xây dựng lớp Date. Dữ liệu thành phần bao gồm ngày, tháng, năm. Các hàm thành phần bao gồm: hàm tạo, hàm truy cập dữ liệu, hàm normalize() để chuẩn hóa dữ liệu nằm trong khoảng quy định của ngày ( 1<= ngày < dáyIn(tháng)), tháng (1<= tháng <12), năm (năm >=1), hàm daysIn(int_ trả về số ngày trong tháng, hàm advance(int y, int m, int d) để tăng ngày hiện lên các năm y, tháng m, ngày d của đối tượng đang tồn tại, hàm reset(int y, int m, int d) để đặt lại ngày cho một đối tượng đang tồn tại và một hàm print() để hiển thị dữ liệu"


    Bác nào cho em hỏi là cái hàm advance(int y, int m, int d) trong đầu bài là nó yêu cầu gì thế ?
    Ai có lòng hảo tâm làm giúp để em tham khảo với. Thanks.

    C++ Code:
    1. #include<stdio.h>
    2. #include<conio.h>
    3. #include<iostream.h>
    4. #include<iomanip.h>
    5. class Date
    6. {
    7. private:
    8.     int Day;
    9.     int Month;
    10.     int Year;
    11.     static int Days[];
    12. public:
    13.     Date()
    14.     {
    15.         int D=1;
    16.         int M=1;
    17.         int Y=1900;
    18.     };  // Gia Tri Gan Mac Dinh Cho Doi Tuong
    19.  
    20. void Normalize(int, int, int);
    21. void Advance();
    22. void Reset(int, int , int);
    23. void Print();
    24. int daysIn(int);
    25. int ktrnhuan(int);
    26.  
    27. };
    28.  
    29. // Ham Days -- Chua So Ngay Trong Thang
    30. int Date::Days[]={31,28,31,30,31,30,31,31,30,31,30,31};
    31.  
    32. // Ham ktrnhuan -- Kiem Tra Xem Co Phai Nam Nhuan Ko ?
    33. int Date::ktrnhuan(int Y)
    34. {
    35.     if (Y %4==0&&Y %100!=0)
    36.         return 1;
    37.     if (Y %400==0)
    38.         return 1;
    39.     return 0;
    40. }
    41.  
    42. // Ham Normalize -- Chuan Hoa Du Lieu Ngay Thang Nam
    43. void Date::Normalize(int DD, int MM, int YY)
    44. {
    45.     Month=(MM>=1&&MM<=12)?MM:1;
    46.     Year=(YY>=1900&&YY<=2100)?YY:1900;
    47.     if(Month==2 && ktrnhuan(Year))
    48.         Day=(DD>=1&&DD<=29)?DD:1;
    49.     else
    50.         Day=(DD>=1&&DD<=Days[Month-1])?DD:1;
    51. };
    52.  
    53. // Han daysIn -- Tra Ve So Ngay Trong Thang
    54. int Date::daysIn(int D)
    55. {
    56.     if(Month==2 && ktrnhuan(Year)==0)
    57.         return D==29;
    58.     return D==Days[Month-1];
    59. }
    60.  
    61. // Ham Advance -- Tang ngay thang nam
    62. void Date::Advance()
    63. {
    64.     if( Day=daysIn(Day)) // Het Nam
    65.     {
    66.         Day=1;
    67.         Month=1;
    68.         ++Year;
    69.     }
    70.     else
    71.         if(daysIn(Day))        //Het Thang
    72.         {
    73.             Day=1;
    74.             ++Month;
    75.         }
    76.         else
    77.             ++Day;
    78. }
    79.  
    80.  
    81. // Ham Print  -- De Hien Thi Du Lieu
    82. void Date::Print()
    83. {
    84.    
    85. }
    86.  
    87.  
    88. void main()
    89. {
    90.     Date D1, D2(30,12,2006);
    91.  
    92.  
    93. }

    Tớ làm sơ sơ được thế này, ngồi viết hàm reset + print + main nó cứ lỗi tung trời lên, chẳng sửa được. Nên đành xóa đi, vào 4rum nhờ bà con vít giùm nốt, bổ sung giùm cái j thiếu với. Thank !!

    .....Đừng Trách Em Gà Vì Em Đúng Là Gà....

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

    @Vibi: Cậu bị sai từ tư tưởng tẩu hỏa nhập ma giữa c và c++ yêu cầu xem lại ý thuyết C++.

  3. #3
    Ngày gia nhập
    09 2006
    Nơi ở
    Somewhere I belong
    Bài viết
    4

    Mình có một bài class date vừa làm song các bạn dúp mình tối ưu mã nguồn
    Bài này mình làm dài quá
    C++ Code:
    1. // class date Vu Thanh Nam KTV 6.2A
    2. #include <iostream.h>
    3. #include <conio.h>
    4. #include <math.h>
    5. #include <stdlib.h>
    6. int songay(int m,int y);
    7. class date
    8. {
    9.     private:
    10.     int d;
    11.       int m;
    12.       int y;
    13.    public:
    14.     void setdate(int ngay);
    15.       int getdate();
    16.       void setmonth(int thang);
    17.       int getmonth();
    18.       void setyear(int nam);
    19.       int getyear();
    20.     int sosanh(date s)const;
    21.       date cong1ngay()const;
    22.       int tinhsongay(date);
    23. };
    24.  
    25. void date::setdate(int ngay) ////////////////////
    26. {
    27.     d = ngay;
    28. };
    29.  
    30. int date::getdate() ////////////////
    31. {
    32.     return d;
    33. };
    34.  
    35. void date::setmonth(int thang) ///////////////////
    36. {
    37.     m = thang;
    38. };
    39.  
    40. int date::getmonth()   ////////////////////
    41. {
    42.     return m;
    43. };
    44.  
    45. void date::setyear(int nam) /////////////////////////
    46. {
    47.     y = nam;
    48. }
    49.  
    50. int date::getyear()//////////////////////
    51. {
    52.     return y;
    53. };
    54.  
    55. int date::sosanh(date s)const// ham so sanh /////////////////
    56. {
    57.    if(y < s.y || (y == s.y &&  m < s.m )||(y == s.y && m == s.m && d < s.d))
    58.     return -1;
    59.    else
    60.         {
    61.         if(y > s.y ||(y == s.y && m > s.m) ||(y == s.y && m == s.m && d > s.d))
    62.             return 1;
    63.          else
    64.             return 0;
    65.       }
    66. };
    67.  
    68. date date::cong1ngay()const//ham cong mot ngay/////////////////
    69. {
    70.     date kq;
    71.    if(d == songay(m,y))
    72.    {
    73.     kq.d = 1;
    74.       if(m == 12)
    75.       {
    76.         kq.y = y + 1;
    77.          kq.m = 1;
    78.       }
    79.       else
    80.       {
    81.         kq.m = m +1;
    82.          kq.y = y;
    83.       }
    84.    }
    85.    else
    86.    {
    87.         kq.d = d + 1;
    88.       kq.m = m;
    89.       kq.y = y;
    90.    }
    91.    return kq;
    92. };
    93.  
    94. int date::tinhsongay(date t2)     // ham tinh so ngay///////////////////////
    95. {
    96.     date t1;
    97.    date min,max;
    98.    int date,month,year;
    99.    cout<<"\nNhap vao ngay thang nam cua moc thu 1: ";
    100.       do
    101.       {
    102.         cout<<"\n\tNhap vao ngay: ";
    103.         cin>>date;
    104.         t2.setdate(date);
    105.       }while(date < 1 || date> 31);
    106.       do
    107.       {
    108.         cout<<"\tNhap vao thang: ";
    109.         cin>>month;
    110.         t2.setmonth(month);
    111.       }while(month < 1 || month>12);
    112.       cout<<"\tNhap vao nam: ";
    113.       cin>>year;
    114.       t2.setyear(year);
    115.    cout<<"\nNhap vao ngay thang nam cua moc thu 2: ";
    116.       do
    117.       {
    118.         cout<<"\n\tNhap vao ngay: ";
    119.         cin>>date;
    120.         t1.setdate(date);
    121.       }while(date < 1 || date> 31);
    122.       do
    123.       {
    124.         cout<<"\tNhap vao thang: ";
    125.         cin>>month;
    126.         t1.setmonth(month);
    127.       }while(month < 1 || month>12);
    128.       cout<<"\tNhap vao nam: ";
    129.       cin>>year;
    130.       t1.setyear(year);
    131.    if(t1.sosanh(t2) == -1)
    132.    {
    133.         min = t1;
    134.       max = t2;
    135.    }
    136.    else
    137.    {
    138.         max = t1;
    139.       min = t2;
    140.    }
    141.    int dem = 0;
    142.    while(min.sosanh(max)== -1)
    143.    {
    144.         min = min.cong1ngay();
    145.       dem++;
    146.    }
    147.    cout<<"\nVa so ngay tu "<<t2.getdate()<<"/"<<t2.getmonth()<<"/"<<t2.getyear();
    148.    cout<<" den ngay "<<t1.getdate()<<"/"<<t1.getmonth()<<"/"<<t1.getyear()<<"la: ";
    149.    return dem;
    150. };
    151.  
    152. int songay(int m,int y)          //ham tinh so ngay trong 1 thang trong 1 nam bat ky
    153. {
    154.     switch(m)
    155.    {
    156.     case 1:
    157.     case 3:
    158.       case 5:
    159.       case 7:
    160.       case 8:
    161.       case 10:
    162.       case 12:
    163.         return 31;
    164.       case 2:
    165.         if((y%4==0&&y%100!=0)||(y%400==0))
    166.             return 29;
    167.          else
    168.             return 28;
    169.       case 4:
    170.       case 6:
    171.       case 9:
    172.       case 11:
    173.         return 30;
    174.    }
    175.    return 0;
    176. }
    177.  
    178. void main()
    179. {
    180.     date d;
    181.    char chon;
    182.    do
    183.    {
    184.     cout<<"Class date"<<endl;
    185.     cout<<d.tinhsongay(d);
    186.       cout<<" ngay "<<endl;
    187.       cout<<"\nBan co muon tiep tuc khong (y/n) : ";
    188.       cin>>chon;
    189.       system("cls");
    190.    }while(chon == 'y');
    191.    cout<<"\nThanh Nam thank you used program (Press Enter to exit)";
    192.    getch();
    193. } //Phu` cuoi cung` cung da~ song met qua
    Đã được chỉnh sửa lần cuối bởi vtniam : 01-08-2007 lúc 06:07 PM.

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

    gửi các bạn mới bước chân lập trình OOP:
    C++ Code:
    1. #include<iostream>
    2. #include<conio.h>
    3. using namespace std;
    4. class Date {
    5.     private :
    6.         int ngay;
    7.         int thang;
    8.         int nam;
    9.     public:
    10.         Date();
    11.         Date(int);
    12.         Date(int,int);
    13.         Date(int,int,int);
    14.         void Nhap();
    15.         void In();
    16.         void Nam();
    17.         int HopLe();
    18.         Date Cong();
    19.         Date Cong(int);
    20.         };
    21.        
    22.     Date::Date(){
    23.         ngay=1;
    24.         thang=1;
    25.         nam=1900;
    26.         }
    27.     Date::Date(int x){
    28.         ngay=0;
    29.         thang=0;
    30.         nam=x;
    31.         }
    32.     Date::Date(int x,int y){
    33.         ngay=0;
    34.         thang=x;
    35.         nam=y;
    36.         }  
    37.     Date::Date(int x,int y,int z){
    38.         ngay=x;
    39.         thang=y;
    40.         nam=z;
    41.         }  
    42.        
    43.     void Date::Nhap(){
    44.         while(1) {
    45.             cout<<"nhap ngay:   ";
    46.             cin>>ngay;
    47.             cout<<"nhap thang:  ";
    48.             cin>>thang;
    49.             cout<<"nhap nam:   ";
    50.             cin>>nam;
    51.             if(HopLe())
    52.                 break;
    53.             cout<<"vui long nhap lai"<<endl;
    54.         }
    55.         }
    56.     void Date::In(){
    57.         cout<<endl<<ngay<<"/"<<thang<<"/"<<nam;
    58.         }
    59.     void Date::Nam(){
    60.         if(nam%4==0)
    61.         cout<<endl<<"Nam nay la nam nhuan";
    62.         else cout <<endl<<"Nam nay khong la nam nhuan";
    63.         }
    64.        
    65.     int Date::HopLe(){
    66.         if(ngay<=0||thang<=0||thang>12)
    67.         return 0;
    68.         int maxngay1[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
    69.         int maxngay2[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    70.         if(nam%4==0)
    71.         {
    72.         //int maxngay[13]={0,31,29,31,30,31,30,31,31,30,31,30,31};
    73.         return (ngay<=maxngay1[thang]);
    74.         }
    75.         else{
    76.         //  int maxngay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    77.             return (ngay<=maxngay2[thang]);
    78.             }
    79.            
    80.         }
    81.     Date Date::Cong()
    82.     {
    83.         Date kq(ngay, thang, nam);
    84.         if(nam%4==0 && thang==2 &&ngay==28)
    85.             return Date(29,2,nam);
    86.         int maxngay[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
    87.         kq.ngay++;
    88.         if(kq.ngay>maxngay[kq.thang])
    89.         { kq.ngay=1; kq.thang++; }
    90.         if(kq.thang>12)
    91.         {  kq.thang=1; kq.nam++; }
    92.         return kq;
    93.     }
    94.     Date  Date::Cong(int  n)
    95.     {
    96.         Date  kq=*this;
    97.         for(int i=0; i<n; i++)
    98.         kq = kq.Cong();
    99.         return kq;
    100.     }
    101.  
    102. int main()
    103. {
    104.     int n;
    105.     Date day;
    106.     day.Nhap();
    107.     //if(day.HopLe())
    108.        day.In();
    109.     day.Nam();
    110.     cout<<endl<<"ngay khi cong vao 1 ngay"<<endl;
    111.     day.Cong().In();
    112.     cout<<endl<<"Nhap n: ";
    113.     cin>>n;
    114.     cout<<endl<<"ngay khi cong vao "<<n<<" ngay"<<endl;
    115.     day.Cong(n).In();
    116. //  day.In();
    117.     getch();
    118.     return 0;
    119. }
    nếu muốn có ngày mai thì hãy cố gắng từ bjo thay vì ngồi đó than phiền

  5. #5
    Ngày gia nhập
    11 2012
    Bài viết
    2

    Có ai biết chuyển đổi kiểu date sang kieu char (Quy ước ngày 2 kí tự, tháng 2 kí tự và năm 4 kí tự) không, giúp mình với

  6. #6
    Ngày gia nhập
    02 2012
    Nơi ở
    Cần Thơ
    Bài viết
    1

    Mặc định Xây dựng lớp Date trong lập trình C++. Lỗi tùm lum không biết sửa thế nào?

    Mình không biết đổi sang char, nhưng theo mình biết cách để hiện ngày tháng dưới dạng xx/xx/xxxx
    thì dùng cách:
    cout<<ngay/10<<ngay%10<<"/"<<thang/10<<thang%10<<"/"<<nam;

    Năm thì mình đã để 4 chữ số rồi, còn cách nào để mặc định luôn thì chưa rành..
    Mới học OOP dc 1 tháng

  7. #7
    Ngày gia nhập
    12 2012
    Nơi ở
    TIN5A - UNETI
    Bài viết
    167

    bạn dùng ham có sẵn trong C/C++: itoa(int,char*,int) chuyển int->char[]
    hoặc
    #include<iostream.h>
    #include<stdlib.h>
    int main(){
    int i,n = 12345;
    char a[8]=" ",c;
    //itoa(n,a,10);
    i = 0;
    while(n>0){
    a[i] = n%10 + '0';
    n = n/10;
    i++;
    }
    int j = i - 1;
    i = 0;
    while(i<j){
    c = a[i];
    a[i] = a[j];
    a[j] = c;
    i++;
    j--;
    }
    cout<<a;
    return 0;
    }

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

  1. Bài tập C++ Thắc mắc về bài tập xây dựng lớp DATE
    Gửi bởi thai.co trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 08-06-2013, 08:33 AM
  2. Xóa bỏ giá trị 00:00:00 trong kiểu datetime chỉ lấy date như thế nào?
    Gửi bởi toanzoom trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 9
    Bài viết cuối: 21-09-2012, 12:25 AM
  3. Bị lỗi trang default các tag lộn xộn hết, xuất hiện tùm lum lỗi
    Gửi bởi vienchantam trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 7
    Bài viết cuối: 30-05-2011, 11:41 PM
  4. Thắc mắc phép cộng dữ liệu Date và một số nguyên
    Gửi bởi rogerminh2401 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 13
    Bài viết cuối: 03-01-2011, 12:39 AM
  5. Trả lời: 5
    Bài viết cuối: 16-04-2008, 11:55 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