[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

#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*.ten;
cout<<"Nhap gia sach tuong ung : ";cin>>a*.gia;
cout<<"Nhap ten nha san xuat tuong ung : ";cin>>a*.nsb;
cout<<"Nhap ngay xuat : ";
a*.nsx.input();
cout<<"Nhap so trang  :";cin>>a*.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*.ten<<endl;
cout<<"| Gia sach tuong ung : "<<a*.gia<<"|"<<endl;
cout<<"| Ten nha san xuat tuong ung : "<<a*.nsb<<"|"<<endl;
cout<<"| Ngay xuat : ";
a*.nsx.output();
cout<<"| Nhap so trang  :"<<a*.trang<<"|"<<endl;
cout<<"---------------------------------------------------"<<"|"<<endl;
}
}
void main()
{
book vt;
vt.input();
vt.output();
getch();
}

Anh chạy bình thường mà…:sogood:

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

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:
#include <iostream>
using namespace std;
class Sach
{
private:
char*		_ten;
char*		_nsx;
char*		_nxb;
int			_trang;
public:
Sach(char* ten, char* nsx, char* nxb, int trang)
{
_ten = ten;
_nsx = nsx;
_nxb = nxb;
_trang = trang;
}
char* Ten() {return _ten; }
char* NSX() {return _nsx; }
char* NXB() {return _nxb; }
int Trang() { return _trang; }
~Sach()
{
}
};
int main()
{
int num, trang;
char* ten, *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 = 0; i < num; i++)
{
cout<<"STT"<<i + 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* = new Sach(ten, nsx, nxb, trang);
}
cout<<"---------------------------------------"<<endl;
// Xuat thong tin
for(int i = 0; i < num; i++)
{
cout<<"STT"<<i + 1<<endl;
cout<<"Ten sach: "<<sach*->Ten()<<endl;
cout<<"Nha san xuat: "<<sach*->NSX()<<endl;
cout<<"Ngay xuat ban: "<<sach*->NXB()<<endl;
cout<<"So trang: "<<sach*->Trang()<<endl;
}
system("pause");
}

[QUOTE=10520418;234130]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:
#include <iostream>
using namespace std;
class Sach
{
private:
char*		_ten;
char*		_nsx;
char*		_nxb;
int			_trang;
public:
Sach(char* ten, char* nsx, char* nxb, int trang)
{
_ten = ten;
_nsx = nsx;
_nxb = nxb;
_trang = trang;
}
char* Ten() {return _ten; }
char* NSX() {return _nsx; }
char* NXB() {return _nxb; }
int Trang() { return _trang; }
~Sach()
{
}
};
int main()
{
int num, trang;
char* ten, *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 = 0; i < num; i++)
{
cout<<"STT"<<i + 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* = new Sach(ten, nsx, nxb, trang);
}
cout<<"---------------------------------------"<<endl;
// Xuat thong tin
for(int i = 0; i < num; i++)
{
cout<<"STT"<<i + 1<<endl;
cout<<"Ten sach: "<<sach*->Ten()<<endl;
cout<<"Nha san xuat: "<<sach*->NSX()<<endl;
cout<<"Ngay xuat ban: "<<sach*->NXB()<<endl;
cout<<"So trang: "<<sach*->Trang()<<endl;
}
system("pause");
}

[/QUOTE]
cám ơn a .

[QUOTE=10520418;234130]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:
#include <iostream>
using namespace std;
class Sach
{
private:
char*		_ten;
char*		_nsx;
char*		_nxb;
int			_trang;
public:
Sach(char* ten, char* nsx, char* nxb, int trang)
{
_ten = ten;
_nsx = nsx;
_nxb = nxb;
_trang = trang;
}
char* Ten() {return _ten; }
char* NSX() {return _nsx; }
char* NXB() {return _nxb; }
int Trang() { return _trang; }
~Sach()
{
}
};
int main()
{
int num, trang;
char* ten, *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 = 0; i < num; i++)
{
cout<<"STT"<<i + 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* = new Sach(ten, nsx, nxb, trang);
}
cout<<"---------------------------------------"<<endl;
// Xuat thong tin
for(int i = 0; i < num; i++)
{
cout<<"STT"<<i + 1<<endl;
cout<<"Ten sach: "<<sach*->Ten()<<endl;
cout<<"Nha san xuat: "<<sach*->NSX()<<endl;
cout<<"Ngay xuat ban: "<<sach*->NXB()<<endl;
cout<<"So trang: "<<sach*->Trang()<<endl;
}
system("pause");
}

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

Mày spam đi.lưỡi hái của admin sắp đến lượt mày rồi đó[QUOTE=phuhais;240984]chắc do phần cài đặt c++ chưa đúng nên k chạy đc[/QUOTE]