Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<conio.h>
- using namespace std;
- typedef struct mh
- {
- char mamh[10];
- char tenmh[50];
- char dvt[10];
- int sl;
- float gia;
- };
- typedef struct node
- {
- mh data;
- node*link;
- };
- typedef struct list
- {
- node*first;
- node*last;
- };
- void init(list &l)
- {
- l.first=NULL;
- l.last=NULL;
- }node*Getnode(mh x)
- {
- node*p= new node;
- if(p==NULL)
- exit (1);
- p->data=x;
- p->link=NULL;
- return p;
- }
- void InsertLast(list &l, node*p)
- {
- if(l.first!=NULL)
- {
- l.last->link=p;
- l.last=p;
- }
- else
- {
- l.first=l.last=p;
- }
- }
- void InputLast(list &l)
- {
- int n;
- mh x;
- cout<<"Nhap danh sach cac mat hang:";
- cin>>n;
- for(int i=1;i<=n;i++)
- {
- cout<<"Mat hang thu:"<<i;
- cout<<"\nMa mat hang:";
- flushall();
- gets(x.mamh);
- cout<<"Ten mat hang:";
- gets(x.tenmh);
- cout<<"Don vi tinh:";
- gets(x.dvt);
- flushall();
- cout<<"So luong:";
- cin>>x.sl;
- cout<<"Gia:";
- cin>>x.gia;
- node*p=Getnode(x);
- InsertLast(l,p);
- }
- }
- void OutPut(list l)
- {
- int STT=1;
- node*p=l.first;
- cout<<"Danh sach cac mat hang la\n";
- cout<<"\tSTT\tMaMH\tTenMH\t\tDVT\tSoLuong\tDongia\tThanhTien\n";
- while(p!=NULL)
- {
- cout<<"\t"<<STT++<<"\t"<<p->data.mamh<<"\t"<<p->data.tenmh<<"\t\t"<<p->data.dvt<<"\t"<<p->data.sl<<"\t"<<p->data.gia<<"\t"<<p->data.sl*p->data.gia<<endl;
- p=p->link;
- }
- }
- int DemMHkg(list l)
- {
- int dem=0;
- node*p=l.first;
- while(p!=NULL)
- {
- if(strcmp(p->data.dvt,"kg")==0)
- dem++;
- p=p->link;
- }return dem;
- }
- void InMHSL1000(list l)
- {
- int STT=1;
- node*p=l.first;
- cout<<"\nSTT\tMaMH\tTenMH\t\tDVT\tSL\tDongia\tThanhTien\n";
- while(p!=NULL)
- {
- if(p->data.sl>1000 &&strcmp(p->data.dvt,"kg")==0)
- cout<<STT++<<"\t"<<p->data.mamh<<"\t"<<p->data.tenmh<<"\t\t"<<p->data.dvt<<"\t"<<p->data.sl<<"\t"<<p->data.gia<<"\t"<<p->data.gia*p->data.sl<<endl;
- p=p->link;
- }
- }
- void sapxep1(list l)
- {
- {
- for(node*p=l.first;p!=l.last;p=p->link)
- for(node*q=p->link;q!=NULL;q=q->link)
- if(p->data.gia<q->data.gia)
- swap(p->data,q->data);
- else if(p->data.gia==q->data.gia && strcmp(p->data.mamh,q->data.mamh)<0)
- swap(p->data,q->data);
- }
- }
- void sapxep2(list l)
- {
- {
- for(node*p=l.first;p!=l.last;p=p->link)
- for(node*q=p->link;q!=NULL;q=q->link)
- if(p->data.sl*p->data.gia>q->data.sl*q->data.gia)
- swap(p->data,q->data);
- else if(p->data.sl*p->data.gia==q->data.sl*q->data.gia && p->data.sl<q->data.sl)
- swap(p->data,q->data);
- }
- }
- void TimMHGiaMax(list l)
- {
- node*p=l.first;
- float max=l.first->data.gia;
- while(p!=NULL)
- {
- if(p->data.gia>max)
- max=p->data.gia;
- p=p->link;
- }
- int STT=1;
- node*p=l.first;
- cout<<"\nMat hang co gia lon nhat la";
- cout<<"\nSTT\tMaMH\tTenMH\t\tDVT\tSL\tDongia\tThanhTien\n";
- while(p!=NULL)
- {
- if(p->data.gia==max)
- cout<<STT++<<"\t"<<p->data.mamh<<"\t"<<p->data.tenmh<<"\t\t"<<p->data.dvt<<"\t"<<p->data.sl<<"\t"<<p->data.gia<<"\t"<<p->data.sl*p->data.gia<<endl;
- p=p->link;
- }
- }
- void TimMHTTMin(list l)
- {
- node*p=l.first;
- float min=l.first->data.gia*l.first->data.sl;
- while(p!=NULL)
- {
- if(p->data.gia*p->data.sl<min)
- min=p->data.gia*p->data.sl;
- p=p->link;
- }
- int STT=1;
- cout<<"\nMat hang co thanh tien nho nhat la la";
- cout<<"\nSTT\tMaMH\tTenMH\t\tDVT\tSL\tDongia\tThanhTien\n";
- node*p=l.first;
- while(p!=NULL)
- {
- if(p->data.gia*p->data.sl==min)
- cout<<STT++<<"\t"<<p->data.mamh<<"\t"<<p->data.tenmh<<"\t\t"<<p->data.dvt<<"\t"<<p->data.sl<<"\t"<<p->data.gia<<"\t"<<p->data.sl*p->data.gia<<endl;
- p=p->link;
- }
- }
- void main()
- {
- int dem,t;
- list l;
- init(l);
- InputLast(l);
- OutPut(l);
- t=DemMHkg(l);
- cout<<"\nCo tat ca "<<t<<" mat hang co don vi la kg";
- cout<<"\nCac mat hang co so luong >1000 la:";
- InMHSL1000(l);
- cout<<"\nSap xe giam dan theo gia neu cung gia tang theo ma hang";
- sapxep1(l);
- OutPut(l);
- cout<<"\nSap xep tang theo thanh tien neu cung thanh tien giam theo so luong:";
- sapxep2(l);
- OutPut(l);
- TimMHGiaMax(l);
- TimMHTTMin(l);
- getch();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement