PDA

View Full Version : DSLK đơn các hàm sắp xếp, tìm kiếm không chạy được



fithou91192
07-11-2011, 04:43 AM
em không hiểu máy không báo lỗi nhưng khi em gọi hàm sắp xếp và tìm kiếm ra thì nó không chạy và đây là code


#include<iostream.h>
#include<iomanip.h>
#include<conio.h>
#include<string.h>
#include<stdio.h>
#include<stdlib.h>
class hang
{
char ten[20];
int k;
public:
void nhap()
{
cout<<"\n nhap ten mat hang: ";
cin.get(ten,20); cin.ignore();
cout<<"\n nhap so luong:";
cin>>k; cin.ignore();
}
friend class queue;
friend class link;
};
class node
{
hang data;
node *next;
friend class queue;
friend class link;
};
class queue
{
protected:
node *dau;
node *cuoi;
public:
//static tieude()
queue() {dau = NULL;}
~queue()
{
dau = NULL;
cuoi=NULL;
}
bool empty()
{
if(dau == NULL)
return true;
else
return false;
}
void push(hang d)
{
node *p = new node;
strcpy(p->data.ten,d.ten);
p->data.k=d.k;
p->next=NULL;
if(dau == NULL)
{
dau=p;
cuoi=dau;
}
else
{
cuoi->next = p;
cuoi = p;
}
}
void pop()
{
if(!empty())
{
node *p = dau;
dau = dau->next;
p->next = NULL;
delete p;
}
else
cout<<"\n rong";
}
void show()
{
node *p = dau;
while(p!=NULL)
{
cout<<setw(15)<<p->data.ten<<setw(10)<<p->data.k<<endl;
p = p ->next;
}
cout<<endl;
}

};
class link:public queue
{
hang tg;
public:
void timkiem1(char name[20])
{
node *p=dau;
while(p!=NULL)
{
if(strcmp(p->data.ten,name)==0)
cout<<setw(15)<<p->data.ten<<setw(5)<<p->data.k<<endl;
else
cout<<"\n khong co mat hang nay trong kho";
}
}
void timkiem2(int b)
{
node *p=dau;
while(p!=NULL)
{
if(p->data.k==b)
{
cout<<setw(15)<<p->data.ten<<setw(5)<<p->data.k<<endl;
break;
}
else
cout<<"\n khong co mat hang nay trong kho";
}
}
void sapxep1()
{
node *p,*q;
for(p=dau;p!=NULL;p->next)
for(q=p->next;q!=NULL;q->next)
if(p->data.ten<q->data.ten)
{
tg=p->data;
p->data=q->data;
q->data=tg;
}
}
void sapxep2()
{
node *p,*q;
for(p=dau;p!=NULL;p->next)
for(q=p->next;q!=NULL;q->next)
if(p->data.k<q->data.k)
{
tg=p->data;
p->data=q->data;
q->data=tg;
}
}
};
void main()
{
link a;
hang b;
char c[20];
printf("\n chao mung ban da den voi cua hang cua chung toi");
getch();
system("cls");
cout<<endl;

for(int i=0;i<3;i++)
{
b.nhap();
a.push(b);
}
a.show();
cout<<"\n nhap ten can tim:";
cin.get(c,20);
a.show();
a.timkiem1(c);*/
int d;
cout<<"\n nhap vao so luong can tim: ";
cin>>d;
a.timkiem2(d);
a.sapxep1();
a.show();
getch();
}

loicuoi
07-11-2011, 04:53 AM
Không biết bạn dùng IDE gì chứ mình dùng Turbo C nó báo lỗi tùm lum à.
Hình như C/C++ không có kiểu bool. :|

fithou91192
07-11-2011, 05:15 AM
Không biết bạn dùng IDE gì chứ mình dùng Turbo C nó báo lỗi tùm lum à.
Hình như C/C++ không có kiểu bool. :|

mình chạy bằng Visual C++ và DEV C nó không báo lỗi mà bạn trong tubo C bool thay bằng boolean

fithou91192
07-11-2011, 06:20 AM
ok mình đã tìm ra lỗi hàm tìm kiếm thiếu cái thằng p=p->next ):)T chưa tăng cho nó thì sao mà chạy được chứ
còn thằng sắp xếp nữa mình tìm mãi không ra củ chuối quá (D:)>(:-)??

kuhoang0512
07-11-2011, 08:05 AM
ok mình đã tìm ra lỗi hàm tìm kiếm thiếu cái thằng p=p->next ):)T chưa tăng cho nó thì sao mà chạy được chứ
còn thằng sắp xếp nữa mình tìm mãi không ra củ chuối quá (D:)>(:-)??
tương tự bạn coi lại câu lệnh cuối trong các dãy for nha

void sapxep1()
{
node *p,*q;
for(p=dau;p!=NULL;p->next) // p=p->net
for(q=p->next;q!=NULL;q->next) //
if(p->data.ten<q->data.ten)
{
tg=p->data;
p->data=q->data;
q->data=tg;
}
}
void sapxep2()
{
node *p,*q;
for(p=dau;p!=NULL;p->next) //p=p->next
for(q=p->next;q!=NULL;q->next) //
if(p->data.k<q->data.k)
{
tg=p->data;
p->data=q->data;
q->data=tg;
}
}

fithou91192
07-11-2011, 08:20 AM
tương tự bạn coi lại câu lệnh cuối trong các dãy for nha

void sapxep1()
{
node *p,*q;
for(p=dau;p!=NULL;p->next) // p=p->net
for(q=p->next;q!=NULL;q->next) //
if(p->data.ten<q->data.ten)
{
tg=p->data;
p->data=q->data;
q->data=tg;
}
}
void sapxep2()
{
node *p,*q;
for(p=dau;p!=NULL;p->next) //p=p->next
for(q=p->next;q!=NULL;q->next) //
if(p->data.k<q->data.k)
{
tg=p->data;
p->data=q->data;
q->data=tg;
}
}

uhm nhỉ mắt với chả mũi nhưng dù sao cũng là do mình cùi bắp quá ):)T
thanh bạn@kuhoang0512 nha