30/09/2018, 20:50
Mọi người cho e hỏi đoạn code này sai ở đâu ạ
e chạy đc mà nó cứ đến đoạn Lietke là dừng chương trình ạ , e cảm ơn .
#include<iostream>
#include <conio.h>
#include <string.h>
#include<fstream>
using namespace std;
struct Dausach{
string TenSach,TacGia,TheLoai;
int SoTrang,NamSx ,ISBN;
};
struct node{
Dausach d;
node *next;
};
struct List{
node *First ;
node *Last ;
};
void KhoiTao(List & l){
l.First =l.Last =NULL;
}
node * getNode(Dausach &ds ){
node *p =new node ;
if(p==NULL){
return NULL ;
}
p->d=ds;
p->next=NULL;
return p ;
}
node * Search(List l, int x)
{
for (node * p = l.First; p != NULL ; p=p->next )
if ( p->d.ISBN == x ) return p;
return NULL;
}
void NhapDs (Dausach & ds) {
List l;
node * p ;
NhapLai:
cout<<"Nhap ISBN :";
cin>>ds.ISBN;
if(ds.ISBN<=0){
cout <<"Ma ISBN khong hop le ! Xin nhap lai"<<endl ;
goto NhapLai ;
}
if(Search(l ,ds.ISBN)){
cout<<"Ma ISBN bi trung .Xin nhap lai !";
cout<<endl;
goto NhapLai ;
}
fflush (stdin);
cout << "
Ten sach :" ;
fflush (stdin);
getline(cin,ds.TenSach);
cout << "
Tac gia :" ;
fflush (stdin);
getline(cin,ds.TacGia);
cout << "
The Loai :" ;
fflush (stdin);
getline(cin,ds.TheLoai);
cout<<"
Nhap So Trang :";
cin>>ds.SoTrang;
cout<<"
Nhap Nam San Xuat :";
cin>>ds.NamSx;
p = new node ;
p->d = ds ; p->next=NULL;
}
void LietKe (List l ) {
node * r = l.First ;
int dem =1 ;
if (r==NULL){
cout<<"danh sach rong ! ";
}
else while(r!=NULL){
cout<<"
------------------------------------------";
cout<<"
| Sach thu: "<<dem ++<<" |";
cout<<"
------------------------------------------";
cout<<"
Ma ISBN : "<<r->d.ISBN ;
cout<<"
Ten Sach: "<<r->d.TenSach;
cout<<"
Tac Gia : "<<r->d.TacGia;
cout<<"
The Loai: "<<r->d.TheLoai;
cout<<"
SO Trang: "<<r->d.SoTrang;
cout<<"
Nam Xuat Ban: "<<r->d.NamSx;
r=r->next;
cout<<"
------------------------------------------";
}
}
int Menu(){
int c ;
cout<<endl<<endl <<endl <<" Chuc nang cua chuong trinh "<<endl;
cout<<" ----------------------------------------------------------------"<<endl;
cout<<" | 0 : Thoat. |"<<endl;
cout<<" | 1 : Nhap doc gia. |"<<endl;
cout<<" | 2 : Xuat danh sach doc gia . |"<<endl;
cout<<" | 3 : Nhap dau sach. |"<<endl;
cout<<" | 4 : Xuat danh sach sach. |"<<endl;
cout<<" | 5 : Tim Sach. |"<<endl;
cout<<" | 6 : Muon sach. |"<<endl;
cout<<" | 7 : Tra sach. |"<<endl;
cout<<" | 8 : Danh sach sach doc gia dang muon. |"<<endl;
cout<<" | 9 : Danh sach doc gia muon sach qua han. |"<<endl;
cout<<" | 10: 10 cuon sach co nhieu nguoi muon nhat. |"<<endl;
cout<<" ----------------------------------------------------------------"<<endl;
cout<<"Ban chon : ";
cin>>c;
return c;
}
int main() {
List l ;
Dausach ds;
NhapDs (ds) ;
LietKe(l);
return 0 ;
}
Bài liên quan
bạn đóng khung lai đoạn code đi nhìn thế này rời rạc quá
mình mới tham ra lên k bít . bạn xem cho mình chỗ hàm liet ke có sai k ?
trước include phải có dấu “#”, và return 0; chứ ko phải return 0 ; cơ bản là các dấu ; phải sát vào cuối câu chứ stynax error chắc ở đó rùi
k .mấy cái đó mình làm đúng hết rồi .mà k hiu sao copy qua đây nó ra vậu . mình chỉ hỏi bạn chỗ hàng liệt kê sao ct chạy đến đó nó lại dừng lại
bạn bỏ đoạn code này và thử lại nhé
hàm liệt kê đó nó chỉ chạy đc đến
Sach thu: “<<dem ++<<”
còn khúc sau nó k chạy vào đc
khúc code này bạn thêm 2 đoạn trên dưới làm gì vậy và sao khoảng
xa ghế
trình biên dịch bị hiểu nhầm nên nó mới chạy đến sachthu đó
thế là sai ở đâu bạn . bạn sửa lại cái
“”
mình đã khai báo d đâu bạn .
mình sửa lại rùi
sai j thế bạn . bạn sửa lại cho m cái
Bài này sai khá nhiều chỗ. Mình sẽ chỉ ra vấn đề, bạn tự sửa rồi có gì hỏi lại mình sau.
Hàm này không cần thiết, có thể khởi tạo NULL cho hai member của struct list ngay trong lúc khởi tạo list.
Lỗi thứ 2 xuất phát từ việc nắm không kĩ khái niệm scope, local variable.
Hai List l trong hai đoạn code trên khác nhau hoàn toàn.
Đoạn này thì hàm Search gọi vào List l có 2 member (.First, .Last) chưa được khởi tạo dẫn đến Undefined Behavior.
Vì hai member của List l strong hàm main chưa được khởi tạo nêncũng sẽ dẫn đến Undefined Behavior (Có thể crash chương trình hoặc không).
Còn khá nhiều lỗi khác trong chương trình này:
Cái đó là khai báo node của linked list, hoàn toàn k sai gì hết.