Từ 1 tới 3 trên tổng số 3 kết quả

Đề tài: Thuật toán Tìm kiếm, Xắp xếp trong liên kết đôi trong Quản lý hàng hóa?

  1. #1
    Ngày gia nhập
    11 2012
    Bài viết
    2

    Mặc định Thuật toán Tìm kiếm, Xắp xếp trong liên kết đôi trong Quản lý hàng hóa?

    Đề bài: Quản lý hàng hóa
    Mình đang loay hay mà mãi không làm được hàm Tìm kiếm và Xắp xếp trong liên kết đôi. bác nào rành về Cấu trúc dữ liệu và giải thuật giúp mình với.
    Mình còn những yêu cầu này chưa làm được:
    + Tìm kiếm thông tin hàng hóa theo Mã hàng
    + Tìm kiếm hàng hóa có đơn giá MIN, MAX
    + Đưa ra tên những hàng hóa có đơn giá > 20000
    + Xắp xếp danh sách hàng hoá theo thứ tự tăng dần và giảm dần theo đơn giá.

    Đây là đoạn Code mà mình đã làm được:
    C++ Code:
    1. #include<iostream.h>
    2. #include<conio.h>
    3. #include<stdlib.h>
    4. #include<stdio.h>
    5. #include<string.h>
    6. #include<iomanip.h>
    7. //khai bao cau truc
    8. typedef struct node
    9. {
    10.     char mahh[10];
    11.     char tenhh[40];
    12.     float dongia,namsx,hsd;
    13.     int soluong;
    14.     float thanhtien, tongtien;
    15.     struct node *pPrev;
    16.     struct node *pNext;
    17. }DNODE;
    18. //quan ly
    19. typedef struct list
    20. {
    21.     DNODE *first;
    22.     DNODE *last;
    23. }LIST;
    24. void Init(LIST &l)
    25. {
    26.     l.first=l.last=NULL ;
    27. }
    28. DNODE *GetNode(char mahh[],char tenhh[],float dongia,int soluong, float thanhtien,float namsx,float hsd)
    29. {
    30.     DNODE *p;
    31.     p=new DNODE;
    32.     if(p==NULL)
    33.     {
    34.         cout<<"\n Loi cap phat";
    35.         exit(1);
    36.     }
    37.     strcpy(p->mahh,mahh);
    38.     strcpy(p->tenhh,tenhh);
    39.     p->namsx=namsx;
    40.     p->hsd=hsd;
    41.     p->dongia=dongia;
    42.     p->soluong=soluong;
    43.     p->thanhtien=thanhtien;
    44.     p->pPrev=p->pNext=NULL;
    45.     return p;
    46. }
    47. void Addfirst(LIST &l,DNODE *new_ele)
    48. {
    49.     if(l.first==NULL)
    50.     {
    51.         l.first=new_ele;
    52.         l.last=l.first ;
    53.     }
    54.     else
    55.     {
    56.         new_ele->pNext=l.first;
    57.         l.first->pPrev=new_ele;
    58.         l.first=new_ele;
    59.     }
    60. }
    61. void Addtail(LIST &l,DNODE *new_ele)
    62. {
    63.     if(l.first==NULL)
    64.     {
    65.         l.first=new_ele;
    66.         l.last=l.first ;
    67.     }
    68.     else
    69.     {
    70.         l.last->pNext=new_ele;
    71.         new_ele->pPrev=l.last;
    72.         l.last=new_ele;
    73.     }
    74. }
    75.  
    76.  
    77. void Taods(LIST &l,int n)
    78. {
    79.     char mahh[10],tenhh[40];
    80.     float dongia, thanhtien,namsx,hsd;
    81.     int soluong;
    82.  
    83.     for(int i=0;i<n;i++)
    84.     {
    85.         cout<<"\nNhap Ma Hang Hoa: ";cin >>mahh;fflush (stdin);
    86.        
    87.         printf("\nNhap Ten Hang Hoa: ");
    88.         gets(tenhh);
    89.         cout<<"\nNam San Xuat: ";
    90.         cin>>namsx;
    91.         cout<<"\nHan Su Dung: ";
    92.         cin>>hsd;
    93.         cout<<"\nNhap So Luong: ";
    94.         cin>>soluong;
    95.         cout<<"\nNhap Don Gia: ";
    96.         cin>>dongia;  
    97.         cout<<"\nThanh tien: ";
    98.         cin>>thanhtien;
    99.         DNODE *new_ele=GetNode(mahh,tenhh,dongia,soluong,thanhtien,namsx,hsd);
    100.         Addtail(l,new_ele);
    101.        
    102.     }
    103. }
    104. void Themdsdau(LIST &l,int n)
    105. {
    106.     char mahh[10],tenhh[40];
    107.     float dongia,thanhtien,namsx,hsd;
    108.     int soluong;
    109.  
    110.     {
    111.         cout<<"\nNhap Ma Hang Hoa: ";cin >>mahh;fflush (stdin);
    112.         printf("\nNhap Ten Hang Hoa: ");
    113.         gets(tenhh);
    114.         cout<<"\nNam San Xuat: ";
    115.         cin>>namsx;
    116.         cout<<"\nHan Su Dung: ";
    117.         cin>>hsd;
    118.         cout<<"\nNhap So Luong: ";
    119.         cin>>soluong;
    120.         cout<<"\nNhap Don Gia: ";
    121.         cin>>dongia;  
    122.         cout<<"\nThanh tien: ";
    123.         cin>>thanhtien;
    124.         DNODE *new_ele=GetNode(mahh,tenhh,dongia,soluong,thanhtien,namsx,hsd);
    125.         Addfirst(l,new_ele);
    126.     }
    127. }
    128. void Themdscuoi(LIST &l,int n)
    129. {
    130.     char mahh[10],tenhh[40];
    131.     float dongia,thanhtien,namsx,hsd;
    132.     int soluong;
    133.  
    134.  
    135.     {
    136.         cout<<"\nNhap Ma Hang Hoa: ";cin >>mahh;fflush (stdin);
    137.         printf("\nNhap Ten Hang Hoa: ");
    138.         gets(tenhh);
    139.         cout<<"\nNam San Xuat: ";
    140.         cin>>namsx;
    141.         cout<<"\nHan Su Dung: ";
    142.         cin>>hsd;
    143.         cout<<"\nNhap So Luong: ";
    144.         cin>>soluong;
    145.         cout<<"\nNhap Don Gia: ";
    146.         cin>>dongia;  
    147.         cout<<"\nThanh tien: ";
    148.         cin>>thanhtien;
    149.         DNODE *new_ele=GetNode(mahh,tenhh,dongia,soluong,thanhtien,namsx,hsd);
    150.         Addtail(l,new_ele);
    151.     }
    152. }
    153.  
    154.  
    155.  
    156. void Inds(LIST l)
    157. {
    158.     DNODE *p=l.first;
    159.     while(p!=NULL)
    160.     {
    161.         cout<<endl<<setw(8)<<p->mahh<<setw(12)<<p->tenhh<<setw(10)<<p->namsx<<setw(12)<<p->hsd<<setw(9)<<p->soluong<<setw(12)<<p->dongia<<setw(13)<<p->thanhtien<<"\n ";
    162.        
    163.  
    164.         p=p->pNext;
    165.  
    166.     }
    167. }
    168.  
    169.  
    170.  
    171. int   menu()
    172. {
    173.        int n;
    174.        do
    175.          {
    176.              cout<<"\n";
    177.              cout<<"\n *******MENU******* ";
    178.              cout<<"\n 0 . Nhan 0 de thoat ";
    179.              cout<<"\n 1 . Danh sach Hang Hoa";
    180.              cout<<"\n 2 . Them Hang Hoa vao dau danh sach ";
    181.              cout<<"\n 3 . Them Hang Hoa vao cuoi danh sach ";
    182.              cout<<"\n";
    183.              cout<<"\n     Moi ban chon so: ";cin>>n;
    184.     }while(n<0||n>15);
    185.     return n;
    186. }
    187. int main()
    188. {
    189.    
    190.     LIST l;
    191.     int n;
    192.     Init(l);
    193.     cout<<"\nSo phan tu duoc tao:";
    194.     cin>>n;
    195.     Taods(l,n);
    196.     cout<<"\nDanh sach vua tao: ";
    197.     cout<<"        "<<"\n+---------------------------------------------------------------------------+";
    198.     cout<<"        "<<"\n|                  Quan Ly Hang Hoa                                         |";
    199.     cout<<"        "<<"\n+---------+----------+---------+--------------------+----------+-----------+";
    200.     cout<<"        "<<"\n| Ma Hang | Ten Hang |  Nam Sx |  Han SD  | Soluong | Don Gia  | Thanh tien |";
    201.     cout<<"        "<<"\n+---------+----------+---------+--------------------+-----------------------+\n";
    202.     Inds(l);
    203.     cout<<"        "<<"\n+---------------------------------------------------------------------------+\n";
    204.   int chucnang;
    205.     do{
    206.         chucnang=menu();
    207.         switch(chucnang)
    208.         {
    209. case 0:
    210.                 cout<<" Bam phim so 0 de thoat: ";
    211.                 exit(1);
    212. case 1:
    213.     Inds(l);
    214. cout<<"\nDanh sach Hang Hoa : \n";
    215.                
    216.                 cout<<"        "<<"\n+---------------------------------------------------------------------------+";
    217.                 cout<<"        "<<"\n|                  Quan Ly Hang Hoa                                         |";
    218.                 cout<<"        "<<"\n+---------+----------+---------+--------------------+----------+-----------+";
    219.                 cout<<"        "<<"\n| Ma Hang | Ten Hang |  Nam Sx |  Han SD  | Soluong | Don Gia  | Thanh tien |";
    220.                 cout<<"        "<<"\n+---------+----------+---------+--------------------+-----------------------+\n";
    221.                 Inds(l);
    222.                 cout<<"        "<<"\n+---------------------------------------------------------------------------+\n";
    223.            
    224.                 break;
    225. case 2:              
    226. Themdsdau(l,n);
    227. cout<<"Danh Sach Hang Hoa sau khi them Dau:\n";
    228.                 cout<<"        "<<"\n+---------------------------------------------------------------------------+";
    229.                 cout<<"        "<<"\n|                  Quan Ly Hang Hoa                                         |";
    230.                 cout<<"        "<<"\n+---------+----------+---------+--------------------+----------+-----------+";
    231.                 cout<<"        "<<"\n| Ma Hang | Ten Hang |  Nam Sx |   Han SD | Soluong | Don Gia  | Thanh tien |";
    232.                 cout<<"        "<<"\n+---------+----------+---------+--------------------+-----------------------+\n";
    233.                 Inds(l);
    234.                 cout<<"        "<<"\n+---------------------------------------------------------------------------+\n";
    235.                 break;
    236.  
    237. case 3:          
    238. Themdscuoi(l,n);
    239.                 cout<<"Danh Sach Hang Hoa sau khi them Cuoi:\n";
    240.                 cout<<"        "<<"\n+---------------------------------------------------------------------------+";
    241.                 cout<<"        "<<"\n|                  Quan Ly Hang Hoa                                         |";
    242.                 cout<<"        "<<"\n+---------+----------+---------+--------------------+----------+-----------+";
    243.                 cout<<"        "<<"\n| Ma Hang | Ten Hang |  Nam Sx | Han SD   | Soluong | Don Gia  | Thanh tien |";
    244.                 cout<<"        "<<"\n+---------+----------+---------+--------------------+-----------------------+\n";
    245.                 Inds(l);
    246.                 cout<<"        "<<"\n+---------------------------------------------------------------------------+\n";
    247.                 break;
    248.  
    249.         }
    250.     }while(chucnang!=0);
    251.     getch();
    252. }

  2. #2
    Ngày gia nhập
    02 2010
    Bài viết
    113

    Mình thích code của bạn!!! nhưng góp ý xíu nàk! tại sao bạn lại không tách ra viết 1 hàm Nhập thông tin cho 1 Node nhỉ? như thế code sẽ trong sáng thêm xí nữa!!!
    còn về các yêu cầu còn lại của bạn
    1.Tìm kiếm thông tin hàng hóa theo Mã hàng
    C Code:
    1. DNODE TimKiem(LIST l, char mahang[])
    2. {
    3.        //kiểm tra danh sách rỗng nà
    4.        if(cái mã hàng truyền vào nó trùng với cái mã hàng của thằng đầu tiên trong ds)
    5.              return l.phead;
    6.        DNODE *p=l.phead;
    7.        while(p!=NULL && sosanh (cái mã hàng truyền vào,và p->mahang) chưa giống nhau)
    8.                p=p->pNext
    9.        if(p!=l.phead)
    10.                return p;
    11.        return NULL;//lỡ như mà trong ds không có thằng nào trùng thì sao!!! út chơi đối phó ngu kiểu này :D
    12.  
    13. }
    còn không thì sử dụng 2 biến như thế này
    C Code:
    1. DNODE *p=l.phead;
    2. DNODE *g=NULL;
    3. while(p!=NULL && sosanh như trên)
    4. {
    5.         if(thằng p mà có mã hàng trùng với thằng mã hàng truyền vào)
    6.               g=p;
    7.         p=p->pnext;
    8. }
    9. return g;

    2. Tìm kiếm hàng hóa có đơn giá MIN, MAX
    C Code:
    1. DNODE min(LIST l)
    2. {
    3.        //kiểm tra rỗng ngen
    4.        DNODE p=l.pHead;
    5.        DNODE g=l.pHead;
    6.        while(p!=NULL)
    7.        {
    8.              if(p->dongia < g->dongia)
    9.                       g=p;
    10.         }
    11.         return g;
    12. }
    max tương tự
    3. Đưa ra tên những hàng hóa có đơn giá > 20000
    thì cũng như trên cho 1 biến p chạy, nếu như mà p-> đơn giá > 20000 thì printf nó ra
    C Code:
    1. void Xuatyc(LIST l)
    2. {
    3.        //kiemtra
    4.        DNODE *p=l.phead;
    5.        while(p!=NULL)
    6.      {
    7.              if(p->dongia>20000)
    8.                      ///xuat thông tin node đó ra
    9.              p=p->pnext;
    10.      }
    11. }
    4.Xắp xếp danh sách hàng hoá theo thứ tự tăng dần và giảm dần theo đơn giá
    sử dụng thuật toán InterchangeSort như trên mảng cho nó dễ!!! y chang như mảng chẳng khác gì

  3. #3
    Ngày gia nhập
    11 2012
    Bài viết
    2

    Mình cảm ơn bạn nhiều nha. mình nghĩ mãi mà ko ra bài này.

Các đề tài tương tự

  1. Cách in hóa đơn nhiều liên trong lập trình ASP.NET
    Gửi bởi tuanphong trong diễn đàn Thắc mắc lập trình ASP.NET
    Trả lời: 1
    Bài viết cuối: 02-05-2014, 05:21 PM
  2. Lập trình C Quản lý hàng hóa bằng danh sách liên kết trong C?
    Gửi bởi heroworld trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 8
    Bài viết cuối: 15-07-2012, 11:41 AM
  3. Tài liệu thuật toán mã hóa “Straddling Checkerboard” kiếm ở đâu?
    Gửi bởi ductuan08 trong diễn đàn Tài liệu, ebooks và công cụ
    Trả lời: 0
    Bài viết cuối: 21-09-2011, 06:11 AM
  4. Hàm xóa hóa đơn trong danh sách liên kết bằng class không xóa được hóa đơn
    Gửi bởi heroworld trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 0
    Bài viết cuối: 08-06-2011, 06:40 PM
  5. Chèn và tìm kiếm trong danh sách liên kết đơn trong C?
    Gửi bởi amidamaru trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 6
    Bài viết cuối: 23-03-2010, 09:42 AM

Quyền hạn của bạn

  • Bạn không thể gửi đề tài mới
  • Bạn không thể gửi bài trả lời
  • Bạn không thể gửi các đính kèm
  • Bạn không thể chỉnh sửa bài viết của bạn