Announcement

Collapse
No announcement yet.

[Help] -OOP Hướng Đối Tượng

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • [Help] -OOP Hướng Đối Tượng

    Mình lâu quá k code nên giờ hơi ngu .Có cái code này k biết làm sao ,mong các bạn chỉ giáo .Yêu cầu đề là nhập và xuất danh sách thông tin loại sách theo tên ,nsb;nsx;trang; giá.Mình nhập 1 đối tượng thì chạy bình thường ,nhập nhiều thì nó bị break
    PHP Code:
    #include <conio.h>
    #include <string>
    #include <iostream>
    using namespace std;
    class 
    date
    {
    private :
        
    int d,m,y;
    public:
        
    date(int d1=0,int m1=0,int y1=0)
        {
            
    this->d=d1;
            
    this->m=m1;
            
    this->y=y1;
        }
        
    date operator =(const date p)
        {
            
    this->d=p.d;
            
    this->m=p.m;
            
    this->y=p.y;
        }
        
    void input()
        {
            
    cout<<"Nhap Ngay/thang/nam : "<<endl;
            
    cout<<"Ngay : "
            
    cin>>this->d;
            
    cout<<"Thang : ";
            
    cin>>this->m;
            
    cout<<"Nam : ";
            
    cin>>this->y;

        }
        
    void output()
        {
            
    cout<<"Ngay thang nam : "<<this->d<< "/" <<this->m<<"/"<<this->y<<endl;
        }
    };

    class 
    book

    protected :
        
    char *ten;
        
    char *nsb;
        
    date nsx;
        
    int trang;
        
    float gia;
    public:

        
    int *a[50];
        
    int b;
        
    book():nsx()
        {
            
    gia 0;
            
    ten = new char [30];
            
    nsb=new char [30];
            
    trang=0;
        }
        
    book(int d1,int m1,int y1,char *ten1,char *nsb1,int trang1,float gia1):nsx(d1,m1,y1)
        {
            
    ten = new char [30];
            
    ten=ten1;
            
    nsb=new char [30];
            
    nsb=nsb1;
            
    trang=trang1;
            
    gia=gia1;
        }
        
    book(const book &p)
        {
            
    nsx=p.nsx;
            
    ten = new char [30];
            
    ten=p.ten;
            
    nsb=new char [30];
            
    nsb=p.nsb;
            
    trang=p.trang;
            
    gia=p.gia;
        }
        
    void input();
        
    void output();
    };
    void book:: input()
    {
        
        
    book a[80];
        
    cout<<"Vui Long nhap thong tin theo huong dan  :"<<endl;
        
    cout<<"Nhap so luong san pham muon nhap : ";
        
    cin>>b;
        for(
    int i=0;i<b;i++)
        {
            
    cout<<"Nhap ten sach (khong qua 30 ky tu) : ";cin>>a[i].ten;
            
    cout<<"Nhap gia sach tuong ung : ";cin>>a[i].gia;
            
    cout<<"Nhap ten nha san xuat tuong ung : ";cin>>a[i].nsb;
            
    cout<<"Nhap ngay xuat : ";
            
    a[i].nsx.input();
            
    cout<<"Nhap so trang  :";cin>>a[i].trang;
        }
    }
    void book::output()
    {
        
    book a[80];
        
    cout<<"-------DANH SACH----------"<<endl;
        
    cout<<"---------------------------------------------------"<<"|"<<endl;
        
    cout<<"| So luong san pham : "<<endl;
        for(
    int i=0;i<b;i++)
        {
            
    cout<<"| Ten sach : "<<a[i].ten<<endl;
            
    cout<<"| Gia sach tuong ung : "<<a[i].gia<<"|"<<endl;
            
    cout<<"| Ten nha san xuat tuong ung : "<<a[i].nsb<<"|"<<endl;
            
    cout<<"| Ngay xuat : ";
            
    a[i].nsx.output();
            
    cout<<"| Nhap so trang  :"<<a[i].trang<<"|"<<endl;
            
    cout<<"---------------------------------------------------"<<"|"<<endl;
        }

    void main()
    {    
        
    book vt;
        
    vt.input();
        
    vt.output();
        
    getch();


  • #2
    Anh chạy bình thường mà...:sogood:
    _________________________________
    Handphone No. : 0165 304 6757
    Email : buihuuhiep.uit@gmail.com

    Comment


    • #3
      sao e chạy thì có lúc nó break,có lúc output toàn 0000 và 000

      Comment


      • #4
        Em tham khảo và xây dựng lại đi. Code của em nhìn rối quá.
        - không nên để các phương thức nhập xuất(cout, cin) bên trong phương thức class.
        - khai báo mảng sách nên để trong hàm main..sao lại bỏ trong input, output.!
        Anh có code sai...đừng cười nghen..:smile:
        PHP Code:
        #include <iostream>

        using namespace std;

        class 
        Sach
        {
        private:
            
        char*        _ten;
            
        char*        _nsx;
            
        char*        _nxb;
            
        int            _trang;
        public:
            
        Sach(chartencharnsxcharnxbint trang)
            {
                
        _ten ten;
                
        _nsx nsx;
                
        _nxb nxb;
                
        _trang trang;
            }

            
        charTen() {return _ten; }
            
        charNSX() {return _nsx; }
            
        charNXB() {return _nxb; }
            
        int Trang() { return _trang; }

            ~
        Sach()
            {
            }
        };

        int main()
        {
            
        int numtrang;
            
        charten, *nsx, *nxb;

            
        ten = new char[100];
            
        nsx = new char[100];
            
        nxb = new char[100];

            
        cout<<"Nhap so luong sach: "
            
        cin>>num;
            
        Sach** sach = new Sach*[num];

            
        // Nhap thong tin
            
        for(int i 0numi++)
            {
                
        cout<<"STT"<<1<<endl;
                
        cout<<"Ten sach: ";
                
        cin>>ten;
                
        fflush(stdin);
                
        cout<<"Nha san xuat: ";
                
        cin>>nsx;
                
        fflush(stdin);
                
        cout<<"Ngay xuat ban: ";
                
        cin>>nxb;
                
        fflush(stdin);
                
        cout<<"So trang: ";
                
        cin>>trang;

                
        sach[i] = new Sach(tennsxnxbtrang);
            }
            
        cout<<"---------------------------------------"<<endl;
            
            
        // Xuat thong tin
            
        for(int i 0numi++)
            {
                
        cout<<"STT"<<1<<endl;
                
        cout<<"Ten sach: "<<sach[i]->Ten()<<endl;
                
        cout<<"Nha san xuat: "<<sach[i]->NSX()<<endl;
                
        cout<<"Ngay xuat ban: "<<sach[i]->NXB()<<endl;
                
        cout<<"So trang: "<<sach[i]->Trang()<<endl;
            }

            
        system("pause");


        _________________________________
        Handphone No. : 0165 304 6757
        Email : buihuuhiep.uit@gmail.com

        Comment


        • #5
          Originally posted by 10520418 View Post
          Em tham khảo và xây dựng lại đi. Code của em nhìn rối quá.
          - không nên để các phương thức nhập xuất(cout, cin) bên trong phương thức class.
          - khai báo mảng sách nên để trong hàm main..sao lại bỏ trong input, output.!
          Anh có code sai...đừng cười nghen..:smile:
          PHP Code:
          #include <iostream>

          using namespace std;

          class 
          Sach
          {
          private:
              
          char*        _ten;
              
          char*        _nsx;
              
          char*        _nxb;
              
          int            _trang;
          public:
              
          Sach(chartencharnsxcharnxbint trang)
              {
                  
          _ten ten;
                  
          _nsx nsx;
                  
          _nxb nxb;
                  
          _trang trang;
              }

              
          charTen() {return _ten; }
              
          charNSX() {return _nsx; }
              
          charNXB() {return _nxb; }
              
          int Trang() { return _trang; }

              ~
          Sach()
              {
              }
          };

          int main()
          {
              
          int numtrang;
              
          charten, *nsx, *nxb;

              
          ten = new char[100];
              
          nsx = new char[100];
              
          nxb = new char[100];

              
          cout<<"Nhap so luong sach: "
              
          cin>>num;
              
          Sach** sach = new Sach*[num];

              
          // Nhap thong tin
              
          for(int i 0numi++)
              {
                  
          cout<<"STT"<<1<<endl;
                  
          cout<<"Ten sach: ";
                  
          cin>>ten;
                  
          fflush(stdin);
                  
          cout<<"Nha san xuat: ";
                  
          cin>>nsx;
                  
          fflush(stdin);
                  
          cout<<"Ngay xuat ban: ";
                  
          cin>>nxb;
                  
          fflush(stdin);
                  
          cout<<"So trang: ";
                  
          cin>>trang;

                  
          sach[i] = new Sach(tennsxnxbtrang);
              }
              
          cout<<"---------------------------------------"<<endl;
              
              
          // Xuat thong tin
              
          for(int i 0numi++)
              {
                  
          cout<<"STT"<<1<<endl;
                  
          cout<<"Ten sach: "<<sach[i]->Ten()<<endl;
                  
          cout<<"Nha san xuat: "<<sach[i]->NSX()<<endl;
                  
          cout<<"Ngay xuat ban: "<<sach[i]->NXB()<<endl;
                  
          cout<<"So trang: "<<sach[i]->Trang()<<endl;
              }

              
          system("pause");


          Cám ơn anh ,e sẽ tham khảo sao.VS của e bị hư rồi ..hehe

          Comment

          LHQC

          Collapse
          Working...
          X