E đang làm bài tập lớn CTDL & GT.
có 1 ý là nhập danh sách các đọc giả, đây là e chỉ demo trước nhập 1 đọc giả
code của e
Cho e hỏi thêm với ạ.
tại sao lúc e nhập thì nó chỉ cho nhập đến phai chứ ko đến câu lệnh nhập trang thai
và khi nhập xong e xuất ra thì nó lại lấy giá trị nhập vào của ho gán cho ten và giá trị của ten gán cho phai
e kiểm tra nhiều lắm rồi nên e mới đăng lên để hỏi ạ, mong mọi người giúp e, e cám ơn
#include<iostream>
#include<string.h>
using namespace std;
#define MaxList 200
//Danh mục sách
struct DANHMUCSACH
{
int MaSach;
int TrangThai;
int ViTri;
};
typedef struct DANHMUCSACH DMS;
struct NODEDANHMUCSACH
{
DMS dms;
NODEDANHMUCSACH *pNext;
};
typedef NODEDANHMUCSACH NodeDMS;
struct LISTDANHMUCSACH
{
NodeDMS *pHead;
NodeDMS *pTail;
};
typedef struct LISTDANHMUCSACH LISTDMS;
//Khởi tạo List Danh mục sách
void InitLISTDMS(LISTDMS &list)
{
list.pHead = NULL;
list.pTail = NULL;
}
//Đầu sách
struct DAUSACH
{
int ISBN;
char TenSach[100];
int SoTrang;
char TacGia[50];
int NamXB;
char TheLoai[50];
LISTDMS *ListDMS;
};
// Danh sách mượn trả
struct MUONTRA
{
int MaSach;
char NgayMuon[15];
char NgayTra[15];
int TrangThai;
};
struct NODEMUONTRA
{
MUONTRA muontra;
NODEMUONTRA *pNext;
};
typedef struct NODEMUONTRA NodeMuonTra;
struct LISTMUONTRA
{
NodeMuonTra *pHead;
NodeMuonTra *pTail;
};
typedef struct LISTMUONTRA ListMuonTra;
// khởi tạo danh sách mượn trả ban đầu
void InitListMuonTra(ListMuonTra &list)
{
list.pHead = NULL;
list.pTail = NULL;
}
//Danh sách độc giả
struct DOCGIA
{
int MaDG;
char Ho[10];
char Ten[15];
char Phai[5];
int trangthai;
ListMuonTra *listmuontra;
};
typedef struct DOCGIA DocGia;
struct NODEDOCGIA
{
DocGia dg;
struct NODEDOCGIA *pLeft;
struct NODEDOCGIA *pRight;
};
typedef struct NODEDOCGIA NodeDocGia;
typedef NodeDocGia* TREEDocGia;
// Khởi tại tree độc giả
void InitTreeDocGia(TREEDocGia &t)
{
t = NULL;
}
DocGia *CreateDG(int mdg, char *ho, char *ten, char *phai, int tt, ListMuonTra *l)
{
DocGia *dg;
dg = new DocGia;
if (dg == NULL) exit(1);
else
{
dg->MaDG = mdg;
strcpy_s(dg->Ho, ho);
strcpy_s(dg->Ten, ten);
strcat_s(dg->Phai, phai);
dg->trangthai = tt;
dg->listmuontra = l;
}
return dg;
}
// Thêm độc giả vào cây
void AddNDG(TREEDocGia &t,DocGia q)
{
if (t == NULL)
{
NodeDocGia *d = new NodeDocGia;
d->dg = q;
d->pLeft = NULL;
d->pRight = NULL;
t = d;
}
else {
if (t->dg.MaDG > q.MaDG)
{
AddNDG(t->pLeft, q);
}
else { if (t->dg.MaDG < q.MaDG)
AddNDG(t->pRight, q);
}
}
}
void Xuatlist(ListMuonTra l)
{
NodeMuonTra *p = new NodeMuonTra;
p = l.pHead;
while (p != NULL)
{
cout << "\nMa sach: " << p->muontra.MaSach;
cout << "\nNgay muon: " << p->muontra.NgayMuon;
cout << "\nNgay tra: " << p->muontra.NgayTra;
cout << "\nTrang thai: " << p->muontra.TrangThai;
p = p->pNext;
}
}
//xuất các độc giả
void XuatDG(TREEDocGia t)
{
if (t != NULL)
{
cout << "\nMa doc gia: " << t->dg.MaDG;
cout << "\nHo doc gia: " << t->dg.Ho;
cout << "\nTen doc gia: " << t->dg.Ten;
cout << "\nPhai: " << t->dg.Phai;
cout << "\nTrang thai the: " << t->dg.trangthai;
NodeMuonTra *p = new NodeMuonTra;
p = t->dg.listmuontra->pHead;
while (p != NULL)
{
cout << "\nMa sach: " << p->muontra.MaSach;
cout << "\nNgay muon: " << p->muontra.NgayMuon;
cout << "\nNgay tra: " << p->muontra.NgayTra;
cout << "\nTrang thai: " << p->muontra.TrangThai;
p = p->pNext;
}
XuatDG(t->pLeft);
XuatDG(t->pRight);
}
}
// hàm main
int main()
{
TREEDocGia t;
DocGia *dg=new DocGia;
int mdg, tt;
char ho[30], ten[30], phai[5];
ListMuonTra l;
InitListMuonTra(l);
InitTreeDocGia(t);
cout << "Nhap ma DG:"; cin >> mdg;
cout << "Nhap Ho doc gia: "; cin.getline(ho, 30);
cin.ignore();
cout << "Nhap ten doc gia:"; cin.getline(ten, 30);
cin.ignore();
cout << "Nhap Phai: "; cin.getline(phai, 5);
cin.ignore();
cout << "Trang thai the: "; cin >> tt;
dg = CreateDG(mdg, ho, ten, phai, tt, &l);
AddNDG(t, *dg);
XuatDG(t);
system("pause");
return 0;
}
lỗi dưới này e fix r ạ
lúc e nhập xong các thông tin thì nó chỉ lỗi sai ở dòng dg->MaDG = mdg; trong phần DocGia *CreateDG
Project1.exe has triggered a breakpoint. occurred
Trong bài có lỗi gì thì mong góp ý cho e với ạ, e cám ơn nhiều !!!

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?