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

Đề tài: Rắc rối với hàm ảo ?

  1. #1
    Ngày gia nhập
    08 2008
    Nơi ở
    TP Hồ Chí Minh
    Bài viết
    28

    Angry Rắc rối với hàm ảo ?

    /*Đề bài: Thiết kế chương trình viêc nhập xuất ấn phẩm sau trong một nhà sách: băng, sách. Các thành phần dữ liệu của các ấn phẩm:
    - Băng: tựa đề, giá, thời gian, số lượng
    - Sách: tựa đề, giá, số trang, số lượng.
    */
    C++ Code:
    1. #include <conio.h>
    2. #include <ctype.h>
    3. #include <iostream.h>
    4. #include <stdio.h>
    5. class PUBLICATION   //declare abstract class
    6. {
    7.     char Title[30];
    8.  
    9.   protected:
    10.     float Price;
    11.     int Qty;
    12.  
    13.   public:
    14.     PUBLICATION()
    15.         {
    16.             cout <<"Ten an pham: "; fflush(stdin);  gets(Title);
    17.             cout <<"\nDon gia: ";   cin >>Price;
    18.             cout <<"\nSo luong: ";  cin >>Qty;
    19.         }
    20.     void Put()
    21.         {
    22.             cout <<"\nAn pham " <<Title;
    23.             cout <<"\nCo don gia: " <<Price <<endl;
    24.             cout <<"\nSo luong: " <<Qty;
    25.         }
    26.         virtual void PutData() = 0;  // pure virtual function
    27.     virtual int IsOver() = 0;
    28.     virtual float Get_TG() = 0;
    29. };
    30.  
    31. class BOOK: public PUBLICATION
    32. {
    33.     int Page;
    34.     static float TTG_SACH;
    35.  
    36.   public:
    37.     BOOK()
    38.         {
    39.             cout <<"\nSo trang: ";  cin >>Page;
    40.             TTG_SACH += PUBLICATION:: Qty * PUBLICATION:: Price;
    41.         }
    42.     virtual void PutData()
    43.         {
    44.             Put();
    45.             cout <<"\nSo trang: " <<Page <<endl;
    46.         }
    47.     int IsOver()
    48.         {
    49.             return TTG_SACH;
    50.         }
    51. };
    52. float BOOK:: TTG_SACH = 0;
    53.  
    54. class TAPE: public PUBLICATION
    55. {
    56.     int PlayTime;
    57.     static float TTG_BANG;
    58.  
    59.   public:
    60.     TAPE()
    61.         {
    62.             cout <<"\nThoi gian chay: ";    cin >>PlayTime;
    63.             TTG_BANG += Qty * Price;
    64.         }
    65.     void PutData()
    66.         {
    67.             Put();
    68.             cout <<"\nThoi gian chay: " <<PlayTime <<endl;
    69.         }
    70.     int IsOver()
    71.         {
    72.             return PlayTime > 90 ? 1 : 0;
    73.         }
    74.     virtual float Get_TG()
    75.         {
    76.             return TTG_BANG;
    77.         }
    78. };
    79. float TAPE:: TTG_BANG = 0;
    80.  
    81. void main()
    82. {
    83.     int n1, n2;
    84.     clrscr();
    85.     cout <<"\nSo dau sach cua hang: ";  cin >>n1;
    86.     cout <<"\nSo dau bang trong cua hang: ";    cin >>n2;
    87.     BOOK *SACH;
    88.     TAPE *BANG;
    89.     PUBLICATION *DS[100];
    90.     //nhap du lieu
    91.     for(int i=0; i<n1; i++)
    92.         {
    93.             SACH = new BOOK;  //Lỗi
    94.             DS[i] = SACH;
    95.         }
    96.     for(i=0; i<n2; i++)
    97.         {
    98.             BANG = new TAPE;  //Lỗi(?) (?) [SIZE="4"][FONT="Arial"][COLOR="Black"][FIXED][FIXED][/FIXED][/FIXED][/COLOR][/FONT][/SIZE]
    99.             DS[i+n1] = BANG;
    100.         }
    101.     //xuat du lieu
    102.     for(i=0; i,n1; i++)
    103.         {
    104.             DS[i]->PutData();
    105.             cout <<(DS[i]->IsOver() == 1 ? " Sach hon 900 trang" : "") <<endl;
    106.         }
    107.     cout <<endl <<"Tong tri gia sach= " <<SACH->Get_TG() <<endl;
    108.     for(i=0; i<n2; i++)
    109.         {
    110.             DS[i+n1]->PutData();
    111.             cout <<(DS[i+n1]->IsOver() == 1 ? " Bang > 90" : "") <<endl;
    112.         }
    113.     cout <<endl <<"Tong tri gia bang= " <<BANG->Get_TG() <<endl;
    114.     getch();
    115. }[CODE]
    [LIMG][/LIMG]
    [/code]

    ------
    chú ý đặt code vào tag
    Đã được chỉnh sửa lần cuối bởi Forlorn_hope : 13-08-2008 lúc 11:43 PM.

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

    Đã hết lỗi nhưng mình chưa test là đã chạy đúng với yêu cầu hay chưa.
    C++ Code:
    1.  
    2. #include <conio.h>
    3. #include <ctype.h>
    4. #include <iostream.h>
    5. #include <stdio.h>
    6.  
    7. class PUBLICATION   //declare abstract class
    8. {
    9.     char Title[30];
    10.  
    11.   protected:
    12.     float Price;
    13.     int Qty;
    14.  
    15.   public:
    16.         PUBLICATION()
    17.         {
    18.             cout <<"Ten an pham: "; fflush(stdin);  gets(Title);
    19.             cout <<"\nDon gia: ";   cin >>Price;
    20.             cout <<"\nSo luong: ";  cin >>Qty;
    21.         }
    22.     void Put()
    23.         {
    24.             cout <<"\nAn pham " <<Title;
    25.             cout <<"\nCo don gia: " <<Price <<endl;
    26.             cout <<"\nSo luong: " <<Qty;
    27.         }
    28.         virtual void PutData()=0;  // pure virtual function
    29.     virtual float IsOver() = 0;
    30.     virtual float Get_TG() = 0;
    31.     virtual ~PUBLICATION(){;};
    32. };
    33.  
    34. class BOOK: public PUBLICATION
    35. {
    36.     int Page;
    37.     static float TTG_SACH;
    38.  
    39. public:
    40.     BOOK()
    41.         {
    42.             cout <<"\nSo trang: ";
    43.             cin >>Page;
    44.             TTG_SACH += (Qty * Price);
    45.         }
    46.  
    47.     void PutData()
    48.         {
    49.             Put();
    50.             cout <<"\nSo trang: " <<Page <<endl;
    51.         }
    52. //thêm hàm này vào là ok
    53.     float Get_TG()
    54.     {
    55.         return 0.0;
    56.     }
    57.     float IsOver() // khai bao kieu float ma tra ve kieu int
    58.         {
    59.             return TTG_SACH;
    60.         }
    61.     virtual ~BOOK(){;};
    62. };
    63.  
    64. float BOOK:: TTG_SACH = 0;
    65.  
    66. class TAPE: public PUBLICATION
    67. {
    68.     int PlayTime;
    69.     static float TTG_BANG;
    70.  
    71.   public:
    72.     TAPE()
    73.         {
    74.             cout <<"\nThoi gian chay: ";    cin >>PlayTime;
    75.             TTG_BANG += Qty * Price;
    76.         }
    77.     void PutData()
    78.         {
    79.             Put();
    80.             cout <<"\nThoi gian chay: " <<PlayTime <<endl;
    81.         }
    82.     float IsOver()
    83.         {
    84.             return PlayTime > 90 ? 1.0 : 0.0;
    85.         }
    86.     float Get_TG()
    87.         {
    88.             return TTG_BANG;
    89.         }
    90. };
    91. float TAPE:: TTG_BANG = 0;
    92.  
    93. void main()
    94. {
    95.     int n1, n2;
    96. //    clrscr();
    97.     cout <<"\nSo dau sach cua hang: ";  cin >>n1;
    98.     cout <<"\nSo dau bang trong cua hang: ";    cin >>n2;
    99.  
    100.     BOOK* SACH;
    101.     TAPE* BANG;
    102.     PUBLICATION *DS[100];
    103.     //nhap du lieu
    104.     for(int i=0; i<n1; i++)
    105.         {
    106.             SACH = new BOOK;  //Lo^~i  
    107.            
    108.             DS[i] = SACH;
    109.         }
    110.     for(i=0; i<n2; i++)
    111.         {
    112.             BANG = new TAPE;  //Lo^~i(?) (?) [size="4"][font="Arial"][color="Black"][fixed][fixed][/fixed][/fixed][/color][/font][/size]
    113.             DS[i+n1] = BANG;
    114.         }
    115.     //xuat du lieu
    116.     for(i=0; i,n1; i++)
    117.         {
    118.             DS[i]->PutData();
    119.             cout <<(DS[i]->IsOver() == 1 ? " Sach hon 900 trang" : "") <<endl;
    120.         }
    121.     cout <<endl <<"Tong tri gia sach= " <<SACH->Get_TG() <<endl;
    122.     for(i=0; i<n2; i++)
    123.         {
    124.             DS[i+n1]->PutData();
    125.             cout <<(DS[i+n1]->IsOver() == 1 ? " Bang > 90" : "") <<endl;
    126.         }
    127.     cout <<endl <<"Tong tri gia bang= " <<BANG->Get_TG() <<endl;
    128.     getch();
    129. }

    bạn test lại xem sao nhé. mình chạy được trên VC++6.0 rồi..

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