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

Đề tài: Sắp xếp trong danh sách liên kết kép. Lỗi không xuất kết quả?

  1. #1
    Ngày gia nhập
    10 2011
    Bài viết
    6

    Mặc định Sắp xếp trong danh sách liên kết kép. Lỗi không xuất kết quả?

    Đề yêu cầu là Sắp xếp tăng DSLK Kép Hóa đơn theo tiêu chí: số tiền phải trả.Mình đã tìm thuật toán trên mạng và làm nhưng không tài nào xuất ra được ... nếu có xuất cũng không thấy có thay đổi.Mong mọi người xem giúp code giúp đỡ

    C++ Code:
    1. #include <iostream>
    2. #include <conio.h>
    3. using namespace std;
    4.  
    5. typedef struct {
    6.     char MaHoaDon[10];
    7.     char MaKhachHang_HD[10];
    8.     double DienTieuThu;
    9.     double TienTra;
    10.     int TrangThai;
    11.     int LoaiDangKy;
    12.     int Thang;
    13. } HoaDon;
    14.  
    15. typedef struct Node Node_HoaDon;
    16. struct Node {
    17.     HoaDon info_HoaDon;
    18.     Node_HoaDon *truoc;
    19.     Node_HoaDon *sau;
    20. };
    21.  
    22. typedef struct {
    23.     int SoHoaDon;
    24.     Node_HoaDon *cuoi;
    25.     Node_HoaDon *dau;
    26. } DSHoaDon;
    27.  
    28. typedef struct{
    29.     DSHoaDon lkdsHoaDon;
    30.     char MaKhachHang[10];
    31.     char TenKhachHang[30];
    32.     char DiaChi[40];
    33.     char SoDienThoai[15];
    34.     int DinhMucSuDung;
    35. } KhachHang;
    36.  
    37. typedef struct NodeKH Node_KhachHang;
    38. struct NodeKH{
    39.     KhachHang info_KhachHang;
    40.     Node_KhachHang *truoc;
    41.     Node_KhachHang *sau;
    42. };
    43.  
    44. typedef struct{
    45.     int SoKhachHang;
    46.     Node_KhachHang *dau;
    47.     Node_KhachHang *cuoi;
    48. } DSKhachHang ;
    49.  
    50. void KhoiTao_NodeKhachHang(DSKhachHang *plist){
    51.     plist->dau = NULL;
    52.     plist->cuoi = NULL;
    53.     plist->SoKhachHang = 0;
    54. };
    55.  
    56. void KhoiTao_NodeHoaDon(Node_KhachHang *plistHD){
    57.     plistHD->info_KhachHang.lkdsHoaDon.cuoi = NULL;
    58.     plistHD->info_KhachHang.lkdsHoaDon.dau = NULL;
    59.     plistHD->info_KhachHang.lkdsHoaDon.SoHoaDon = 0;   
    60. }
    61.  
    62. void NhapHoaDon(Node_KhachHang *plistHD){
    63.     Node_HoaDon *xHoaDon;
    64.     int demHD = 0;
    65.     plistHD->info_KhachHang.lkdsHoaDon.SoHoaDon = 0 ;
    66.     xHoaDon = new Node_HoaDon;
    67.     plistHD->info_KhachHang.lkdsHoaDon.dau = xHoaDon;
    68.     plistHD->info_KhachHang.lkdsHoaDon.cuoi = xHoaDon;
    69.     xHoaDon->sau = NULL;
    70.     char selectHD = 'y' ;
    71.     cout<<"             ------- [ Nhap hoa don ] -------          "<<endl;
    72.     while (selectHD == 'y' || selectHD == 'Y' || selectHD == 'Yes' || selectHD == 'yes')
    73.     {
    74.     fflush(stdin);
    75.     cout<<"\n--> HOA DON "<<demHD+1;
    76.     cout<<"\nMa hoa don : ";
    77.     cin>>xHoaDon->info_HoaDon.MaHoaDon;
    78.     cout<<"Trang thai : ";
    79.     cin>>xHoaDon->info_HoaDon.TrangThai;
    80.     cout<<"Loai dang ky : ";
    81.     cin>>xHoaDon->info_HoaDon.LoaiDangKy;
    82.     cout<<"Dien su dung : ";
    83.     cin>>xHoaDon->info_HoaDon.DienTieuThu;
    84.     cout<<"Tien tra : ";
    85.     cin>>xHoaDon->info_HoaDon.TienTra;
    86.     cout<<"Thang : ";
    87.     cin>>xHoaDon->info_HoaDon.Thang;
    88.     do
    89.     {
    90.    
    91.     cout<<"\nNhap tiep mot hoa don khac [y/n] : ";
    92.     cin>>selectHD;
    93.     system("cls");
    94.     if (selectHD !='y' && selectHD != 'n' )
    95.     {
    96.         cout<<"\n[ERROR] : Vui long nhap chinh xac quy dinh."<<endl;
    97.     }
    98.     } while (selectHD !='y' && selectHD != 'n'&& selectHD !='Y' && selectHD != 'N');
    99.     system("cls");
    100.    
    101.     if(selectHD == 'y' || selectHD =='Y' || selectHD == 'Yes' || selectHD == 'yes'){
    102.         Node_HoaDon *x2HoaDon = plistHD->info_KhachHang.lkdsHoaDon.dau;
    103.         int i = 0;
    104.         while(i<demHD-1){
    105.             x2HoaDon = x2HoaDon->sau;
    106.             i++;
    107.         }
    108.         xHoaDon = new Node_HoaDon;
    109.         x2HoaDon->sau = xHoaDon;
    110.         xHoaDon->truoc = x2HoaDon;
    111.         xHoaDon->sau = NULL;
    112.         plistHD->info_KhachHang.lkdsHoaDon.SoHoaDon++;
    113.    
    114.     }
    115.     demHD++;
    116.     }
    117.    
    118.    
    119. }
    120.  
    121. void NhapKhachHang(DSKhachHang *plist){
    122.     plist->SoKhachHang = 1;
    123.     Node_KhachHang *xKhachHang;
    124.     xKhachHang = new Node_KhachHang;
    125.     plist->dau = xKhachHang;
    126.     char selectKH = 'y';
    127.     cout<<"             ------- [ Nhap thong tin khach hang ] -------          "<<endl;
    128.     while (selectKH == 'y' || selectKH == 'Y' || selectKH == 'Yes' || selectKH == 'yes')
    129.     {
    130.    
    131.     cout<<"\nMa khach hang : ";
    132.     cin>>xKhachHang->info_KhachHang.MaKhachHang;
    133.     cout<<"\nTen : ";  
    134.     cin.ignore();
    135.     cin.getline(xKhachHang->info_KhachHang.TenKhachHang,29);   
    136.     cout<<"\nDia chi : ";
    137.     cin.ignore();
    138.     cin.getline(xKhachHang->info_KhachHang.DiaChi,39);
    139.     cout<<"\nSo dien thoai : ";
    140.     cin>>xKhachHang->info_KhachHang.SoDienThoai;
    141.     cin.ignore();
    142.     cout<<"\nDinh muc su dung : ";
    143.     cin>>xKhachHang->info_KhachHang.DinhMucSuDung;
    144.     system("cls"); // xoa man hinh
    145.     NhapHoaDon(xKhachHang);
    146.     do
    147.     {
    148.     cout<<"\nNhap tiep mot khach hang khac [y/n] : ";
    149.     cin>>selectKH;
    150.     system("cls");
    151.     if (selectKH !='y' && selectKH != 'n' && selectKH !='Y' && selectKH != 'N')
    152.     {
    153.         cout<<"\n[ERROR] : Vui long nhap chinh xac quy dinh."<<endl;
    154.     }
    155.     } while ( selectKH != 'y' && selectKH !='n');
    156.     if(selectKH == 'y' || selectKH == 'Y' || selectKH == 'Yes' || selectKH == 'yes'){
    157.         Node_KhachHang *x2KhachHang = plist->dau;
    158.         int j = 0;
    159.         while(j<plist->SoKhachHang-1){
    160.             x2KhachHang = x2KhachHang->sau;
    161.             j++;
    162.         }
    163.         xKhachHang = new Node_KhachHang;
    164.         x2KhachHang->sau = xKhachHang;
    165.         xKhachHang->truoc = x2KhachHang;
    166.         xKhachHang->sau = NULL;
    167.         plist->SoKhachHang++;  
    168.     }
    169.     }  
    170.    
    171. }
    172.  
    173. void XuatThongTin(DSKhachHang *plist){
    174.     Node_KhachHang *xXuat;
    175.     xXuat = new Node_KhachHang;
    176.     xXuat = plist->dau;
    177.     if (plist->SoKhachHang == 1)
    178.     {
    179.         cout<<"             ------- [ Xuat thong tin khach hang  ] -------          "<<endl;
    180.         cout<<"\nMa khach hang : ";
    181.         cout<<xXuat->info_KhachHang.MaKhachHang;
    182.         cout<<"\nTen : ";
    183.         cout<<xXuat->info_KhachHang.TenKhachHang;
    184.         cout<<"\nDia chi : ";
    185.         cout<<xXuat->info_KhachHang.DiaChi;
    186.         cout<<"\nSo dien thoai : ";
    187.         cout<<xXuat->info_KhachHang.SoDienThoai;
    188.         cout<<"\nDinh muc su dung : ";
    189.         cout<<xXuat->info_KhachHang.DinhMucSuDung;
    190.         cout<<"\nCo "<<"[ "<<xXuat->info_KhachHang.lkdsHoaDon.SoHoaDon+1<<" ]"<<" hoa don can thanh toan."<<endl<<endl;
    191.        
    192.     }
    193.     else
    194.     {
    195.     do
    196.     {
    197.     cout<<"             ------- [ Xuat thong tin khach hang  ] -------          "<<endl;
    198.     cout<<"\nMa khach hang : ";
    199.     cout<<xXuat->info_KhachHang.MaKhachHang;
    200.     cout<<"\nTen : ";
    201.     cout<<xXuat->info_KhachHang.TenKhachHang;
    202.     cout<<"\nDia chi : ";
    203.     cout<<xXuat->info_KhachHang.DiaChi;
    204.     cout<<"\nSo dien thoai : ";
    205.     cout<<xXuat->info_KhachHang.SoDienThoai;
    206.     cout<<"\nDinh muc su dung : ";
    207.     cout<<xXuat->info_KhachHang.DinhMucSuDung;
    208.     cout<<"\nCo "<<"[ "<<xXuat->info_KhachHang.lkdsHoaDon.SoHoaDon+1<<" ]"<<" hoa don can thanh toan."<<endl<<endl;
    209.     xXuat = xXuat->sau;
    210.    
    211.     }while (xXuat != NULL);
    212.     }
    213. }
    214.  
    215.  
    216. ///// HAM KHONG HOAT DONG
    217. void SapXepTang(DSKhachHang *plist){
    218.     Node_KhachHang *xSapXep,*ySapXep;
    219.      for(xSapXep = plist->dau; xSapXep->sau != NULL ;xSapXep=xSapXep->sau)
    220.          for (ySapXep = xSapXep->sau; ySapXep->sau != NULL ;ySapXep=ySapXep->sau)
    221.          {
    222.          if(xSapXep->info_KhachHang.lkdsHoaDon.dau->info_HoaDon.TienTra > ySapXep->info_KhachHang.lkdsHoaDon.dau->info_HoaDon.TienTra)
    223.          {
    224.              Node_KhachHang *temp = xSapXep;
    225.              xSapXep = ySapXep;
    226.              ySapXep = temp;
    227.          }
    228.      }
    229.  
    230. }
    231. void main(){
    232.     cout<<"          ------ [De8] Luu tru thong tin hoa don tien dien ------          "<<endl<<endl<<endl;
    233.     DSKhachHang *plist;
    234.     plist = new DSKhachHang;
    235.     KhoiTao_NodeKhachHang(plist);
    236.     NhapKhachHang(plist);
    237.     SapXepTang(plist);
    238.     XuatThongTin(plist);
    239.    
    240. }

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

    Hi bạn,

    Mình tập trung vào hàm void SapXepTang(DSKhachHang *plist thôi nha, giả sử phần còn lại đúng hết
    1) 2 vòng for hình như có vấn đề
    2)
    Code:
                 
                 Node_KhachHang *temp = xSapXep;
                 xSapXep = ySapXep;
                 ySapXep = temp;
    đoạn code này chỉ swap vùng nhớ mà con trỏ xSapXep va ySapXep trỏ tới, ko thay đổi các liên kết trên list của bạn. Nghĩa là list KhachHang của bạn vẫn y cũ . Lỗi này các bạn hay gặp khi mới làm quen với sorting trên List
    Cách sửa: thay vì swap(xSapXep, ySapXep), bạn đổi lại là swap(xSapXep->info_KhachHang, ySapXep->info_KhachHang)

    Code:
    void SapXepTang(DSKhachHang *plist){
            for ( Node_KhachHang *xSapXep = plist->dau; xSapXep!=NULL; xSapXep=xSapXep->sau )
    	{
    		for ( Node_KhachHang *ySapXep = xSapXep->sau; ySapXep!=NULL; ySapXep=ySapXep->sau )
    			if(xSapXep->info_KhachHang.lkdsHoaDon.dau->info_HoaDon.TienTra > ySapXep->info_KhachHang.lkdsHoaDon.dau->info_HoaDon.TienTra)
    			{
    				swap(xSapXep->info_KhachHang , xSapXep->info_KhachHang);
    			}
    		}
    
    }

  3. #3
    Ngày gia nhập
    10 2011
    Bài viết
    6

    Ở trên bạn cho 2 cái xSapXep swap cho nhau hình như lộn phải k , Mình làm thêm cái hàm HoanVi nhưng sau khi build nó lại báo thế này , bạn coi giúp mình

    1> Doan25-3.cpp
    1>c:\documents and settings\admin\my documents\visual studio 2010\projects\c++\doan25-4\doan25-4\doan25-3.cpp(234): error C2664: 'HoanVi' : cannot convert parameter 1 from 'KhachHang' to 'KhachHang *'
    1> No user-defined-conversion operator available that can perform this conversion, or the operator cannot be called
    ========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ==========

    C++ Code:
    1. void HoanVi(KhachHang *x,KhachHang *y)
    2. {
    3.    
    4.     KhachHang *tg;
    5.     tg =x;
    6.     x=y;
    7.     y=tg;
    8.  
    9.  
    10. }
    11. ///// HAM KHONG HOAT DONG
    12. void SapXepTang(DSKhachHang *plist){
    13.  
    14.     for ( Node_KhachHang *xSapXep = plist->dau; xSapXep!=NULL; xSapXep=xSapXep->sau )
    15.     {
    16.         for ( Node_KhachHang *ySapXep = xSapXep->sau; ySapXep!=NULL; ySapXep=ySapXep->sau )
    17.             if(xSapXep->info_KhachHang.lkdsHoaDon.dau->info_HoaDon.TienTra > ySapXep->info_KhachHang.lkdsHoaDon.dau->info_HoaDon.TienTra)
    18.             {
    19.                 HoanVi(xSapXep->info_KhachHang , ySapXep->info_KhachHang);
    20.             }
    21.     }
    22.  
    23. }

  4. #4
    Ngày gia nhập
    03 2012
    Bài viết
    6

    Code:
    void HoanVi(KhachHang &x,KhachHang &y)
    {
    	KhachHang tmp;
    	tmp = x;
    	x = y;
    	y = tmp;
    }
    Mình thấy thắc mắc là yêu cầu sắp xếp trên list HoaDon, sao bạn lại sắp trên danh sách KhachHang ?void SapXepTang(DSKhachHang *plist){...}

    P/s: góp ý: bạn nên thay đổi cấu trúc dữ liệu chút, ví dụ như zay: có 2 ds tách biệt nhau là DSHoaDon và DSKhachHang-->sửa lại cấu trúc của KhachHang
    Code:
    typedef struct{
    	//DSHoaDon lkdsHoaDon;  bỏ cái này
    	char MaKhachHang[10];
    	char TenKhachHang[30];
    	char DiaChi[40];
    	char SoDienThoai[15];
    	int DinhMucSuDung;
    } KhachHang;
    Phải sửa lại hàm nhập NhapHoaDon(DSHoaDon list)NhapKhachHang(DSKhachHang list)

  5. #5
    Ngày gia nhập
    10 2011
    Bài viết
    6

    Trích dẫn Nguyên bản được gửi bởi PpenguinN Xem bài viết
    Code:
    void HoanVi(KhachHang &x,KhachHang &y)
    {
    	KhachHang tmp;
    	tmp = x;
    	x = y;
    	y = tmp;
    }
    Mình thấy thắc mắc là yêu cầu sắp xếp trên list HoaDon, sao bạn lại sắp trên danh sách KhachHang ?void SapXepTang(DSKhachHang *plist){...}

    P/s: góp ý: bạn nên thay đổi cấu trúc dữ liệu chút, ví dụ như zay: có 2 ds tách biệt nhau là DSHoaDon và DSKhachHang-->sửa lại cấu trúc của KhachHang
    Code:
    typedef struct{
    	//DSHoaDon lkdsHoaDon;  bỏ cái này
    	char MaKhachHang[10];
    	char TenKhachHang[30];
    	char DiaChi[40];
    	char SoDienThoai[15];
    	int DinhMucSuDung;
    } KhachHang;
    Phải sửa lại hàm nhập NhapHoaDon(DSHoaDon list)NhapKhachHang(DSKhachHang list)
    Trước tiên cảm ơn bạn rất nhiều đã giúp đỡ mình trong 4rum này.Mình vẫn có vài thắc mắc !

    - Cái đầu mình chưa hiểu rõ , mình nghĩ so sánh dc tiền trả của ai cao hơn rồi thì sắp xếp phần tử của nó luôn , vậy sắp xếp cái tiền trả của list hóa đơn là tự nó chuyển đi cùng luôn ah(tên khách hàng , địa chỉ .v.v. ) .ý mình là nó sẽ so sánh tiền trả và xuất thông tin khách hàng + hóa đơn nào thấp nhất tăng dần .
    - còn cái góp ý bạn là mình tách biệt 2 cái không thông nhau qua cái "lkdsHoaDon" nữa ah , vậy muốn xuất info hóa đơn thì xài cái (DSHOADON list ) và ngược lại với khách hàng ah , vậy thì nó có sự móc nối không ? , 1 khách hàng có thể có nhiều hóa đơn...mỗi cái tạo 1 DSLK kép riêng thì 2 DS đó có liên kết với nhau bằng cách nào

  6. #6
    Ngày gia nhập
    03 2012
    Bài viết
    6

    Mặc định Sắp xếp trong danh sách liên kết kép. Lỗi không xuất kết quả?

    Hi ,
    mỗi cái tạo 1 DSLK kép riêng thì 2 DS đó có liên kết với nhau bằng cách nào
    -->2 DSLK sẽ "nối" nhau thông qua Mã Khách Hàng

    Bạn đọc kỹ đề lại xem:
    Đề yêu cầu là Sắp xếp tăng DSLK Kép Hóa đơn theo tiêu chí: số tiền phải trả.
    (1) cái này hoàn toàn khác với
    ý mình là nó sẽ so sánh tiền trả và xuất thông tin khách hàng + hóa đơn nào thấp nhất tăng dần .
    (2)
    -Truong hợp(1): sắp trên danh sách hóa đơn là xog haz
    -Truong hợp(2):
    +Bạn viết thêm hàm tính số tiền phải trả của mỗi khách hàng (có thể nhìu hóa đơn): tinhSoTienTra(KhachHang).
    hàm này đc tính dựa zô danh sách hóa đơn (mỗi hóa đơn có Mã khách hàng)
    +Sắp xếp DSKhachHang tăng theo tinhSoTienPhaiTra() .Mã
    Code:
        for ( Node_KhachHang *xSapXep = plist->dau; xSapXep!=NULL; xSapXep=xSapXep->sau )
        {
            for ( Node_KhachHang *ySapXep = xSapXep->sau; ySapXep!=NULL; ySapXep=ySapXep->sau )
                if( tinhSoTienTra(xSapXep->info_KhachHang) > tinhSoTienTra(ySapXep->info_KhachHang) )
                {
                    HoanVi(xSapXep->info_KhachHang , ySapXep->info_KhachHang);
                }
        }

    Bây giờ viết tinhSoTienTra(...) nữa là xong

  7. #7
    Ngày gia nhập
    10 2011
    Bài viết
    6

    Trích dẫn Nguyên bản được gửi bởi PpenguinN Xem bài viết
    Hi ,

    -->2 DSLK sẽ "nối" nhau thông qua Mã Khách Hàng

    Bạn đọc kỹ đề lại xem:
    (1) cái này hoàn toàn khác với (2)
    -Truong hợp(1): sắp trên danh sách hóa đơn là xog haz
    -Truong hợp(2):
    +Bạn viết thêm hàm tính số tiền phải trả của mỗi khách hàng (có thể nhìu hóa đơn): tinhSoTienTra(KhachHang).
    hàm này đc tính dựa zô danh sách hóa đơn (mỗi hóa đơn có Mã khách hàng)
    +Sắp xếp DSKhachHang tăng theo tinhSoTienPhaiTra() .Mã
    Code:
        for ( Node_KhachHang *xSapXep = plist->dau; xSapXep!=NULL; xSapXep=xSapXep->sau )
        {
            for ( Node_KhachHang *ySapXep = xSapXep->sau; ySapXep!=NULL; ySapXep=ySapXep->sau )
                if( tinhSoTienTra(xSapXep->info_KhachHang) > tinhSoTienTra(ySapXep->info_KhachHang) )
                {
                    HoanVi(xSapXep->info_KhachHang , ySapXep->info_KhachHang);
                }
        }

    Bây giờ viết tinhSoTienTra(...) nữa là xong
    Sr bạn nhé mình về quê mấy ngày này , hôm nay mình mới lên mạng mới thấy , trước tiên cảm ơn bạn rất nhiều... mình còn gà lắm nên mình thắc mắc

    -->2 DSLK sẽ "nối" nhau thông qua Mã Khách Hàng
    vậy thì :
    - mỗi lần Nhập mã khách hàng ở KHACHHANG thì cũng phải nhập đúng mã khách hàng ở HOADON ?
    - nối nhau thông qua mã khách hàng ... mình k thể hình dung ra cách nối của nó ( mình chưa nắm vững lắm về dslk ) không lẽ khai báo cái mã khách hàng ở KHACHHANG là kiểu DSHOADON để có thể trỏ tiếp --> "nối" ???
    Hay là mình đã hiểu sai đề , là cứ nhập 1 đống khách hàng , sau đó nhập 1 đống hóa đơn . Muốn gắn hóa đơn nào của khách hàng nào thì thông qua việc mã khách hàng ở HOADON ?

    Bạn giải đáp dùm mình việc "nối" nhé

  8. #8
    Ngày gia nhập
    03 2012
    Bài viết
    6

    -
    - mỗi lần Nhập mã khách hàng ở KHACHHANG thì cũng phải nhập đúng mã khách hàng ở HOADON ?
    :đúng rồi bạn

    -
    Code:
    không lẽ khai báo cái mã khách hàng ở KHACHHANG là kiểu DSHOADON để có thể trỏ tiếp --> "nối" ???
    : ko phai zay, mã khách hàng ở KHACHHANG và ở HOADON phải cùng kiểu , ví dụ char MaKhachHang[10]
    -
    Code:
    nhập 1 đống khách hàng , sau đó nhập 1 đống hóa đơn . Muốn gắn hóa đơn nào của khách hàng nào thì thông qua việc mã khách hàng ở HOADON ?
    :đúng rồi bạn

    Mình ví dụ:
    DSKhachHang có 2 khách hàng:
    Code:
    kh1
    {
         TenKhachHang="aaa"
         MaKhachHang="ID111"
         ...
    }
    
    kh2
    {
         TenKhachHang="bbb"
         MaKhachHang="ID222"
         ...
    }
    giả sử kh1 có 2 hóa đơn, kh2 có 1 hóa đơn-->DSHoaDon gồm 3 hóa đơn
    Code:
    hd1
    {
        MaKhachHang = "ID111"
        MaHoaDon = "01"
        ...
    }
    
    hd2
    {
        MaKhachHang = "ID111"
        MaHoaDon = "02"
        ...
    }
    
    
    hd3
    {
        MaKhachHang = "ID222"
        MaHoaDon = "03"
        ...
    }

  9. #9
    Ngày gia nhập
    10 2011
    Bài viết
    6

    Trích dẫn Nguyên bản được gửi bởi PpenguinN Xem bài viết
    - :đúng rồi bạn

    -
    Code:
    không lẽ khai báo cái mã khách hàng ở KHACHHANG là kiểu DSHOADON để có thể trỏ tiếp --> "nối" ???
    : ko phai zay, mã khách hàng ở KHACHHANG và ở HOADON phải cùng kiểu , ví dụ char MaKhachHang[10]
    -
    Code:
    nhập 1 đống khách hàng , sau đó nhập 1 đống hóa đơn . Muốn gắn hóa đơn nào của khách hàng nào thì thông qua việc mã khách hàng ở HOADON ?
    :đúng rồi bạn

    Mình ví dụ:
    DSKhachHang có 2 khách hàng:
    Code:
    kh1
    {
         TenKhachHang="aaa"
         MaKhachHang="ID111"
         ...
    }
    
    kh2
    {
         TenKhachHang="bbb"
         MaKhachHang="ID222"
         ...
    }
    giả sử kh1 có 2 hóa đơn, kh2 có 1 hóa đơn-->DSHoaDon gồm 3 hóa đơn
    Code:
    hd1
    {
        MaKhachHang = "ID111"
        MaHoaDon = "01"
        ...
    }
    
    hd2
    {
        MaKhachHang = "ID111"
        MaHoaDon = "02"
        ...
    }
    
    
    hd3
    {
        MaKhachHang = "ID222"
        MaHoaDon = "03"
        ...
    }
    Thanks bạn mình sẽ code lại , cảm ơn bạn rất nhiều có gì thắc mắc mính sẽ pm lại sau thanks bạn rất nhiều

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

  1. Bài tập C Không xuất được trong danh sách liên kết đơn thỏa mãn 1 yêu cầu
    Gửi bởi taphoc_c trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 12-06-2013, 06:10 PM
  2. Bài tập C++ Lỗi ở hàm xuất 5 năm gần nhất trong danh sách liên kết
    Gửi bởi truonglong99 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 0
    Bài viết cuối: 10-11-2011, 03:11 PM
  3. Nhập và xuất danh sách liên kết lồng danh sách liên kết?
    Gửi bởi nvluong_it trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 22-04-2011, 11:30 AM
  4. Hàm nhập xuất trong danh sách liên kết đơn C++
    Gửi bởi judoka trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 3
    Bài viết cuối: 05-11-2010, 12:37 PM
  5. Lập trình C lỗi xuất trong danh sách liên kết đơn
    Gửi bởi cautrucdulieu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 1
    Bài viết cuối: 11-10-2010, 10:47 PM

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