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

Đề tài: ai có code sắp xếp danh sách họ tên cho xem tham khảo với

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

    Angry ai có code sắp xếp danh sách họ tên cho xem tham khảo với

    VD: cho 1 mảng danh sách là tên chủ hộ. sắp xếp danh sách đó theo họ tên chủ hộ.
    Mình tham khảo thôi, ai có đoạn code tương tự sắp xếp danh sách ký tự đó cho mình tham khảo với. thanks
    VN

  2. #2
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Có thuật toán thôi,

    Nếu chỉ có fullname chủ hộ thì bạn cần một hàm tách tên, còn nếu đã có tên riêng họ riêng thì cứ sắp xếp bình thường thôi.

    So sánh tên, nếu trùng nhau thì so sánh họ rùi sắp xếp.

    Tối về nhà mình gửi cho cái code C sắp xếp struct theo Tên sách, nó cũng tương tự.

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

    uhm bạn cứ send tôi tham khảo thuật toán cũng được, nhưng mà ngôn ngữ C++ thì tốt hơn. xin cảm ơn
    Đã được chỉnh sửa lần cuối bởi bqonline : 26-02-2009 lúc 09:55 AM.
    VN

  4. #4
    Ngày gia nhập
    02 2008
    Nơi ở
    Việt Nam
    Bài viết
    577

    Không biết phải cái bạn cần k?
    C Code:
    1. struct DAUSACH
    2. {
    3.     char MaSach[10];
    4.     char TenSach[30];
    5.     int SoQuyen;
    6.     int SoQuyenMuon;
    7.     int Nam;
    8.     char NhaXB[30];
    9. };
    10.  
    11.  
    12.  
    13. typedef struct tagDMDAUSACH
    14. {
    15.     struct DAUSACH DMSach[MAX];
    16.     int n;
    17. }DanhMucSach;

    C Code:
    1. void HoanVi(struct DAUSACH &DS1,struct DAUSACH &DS2)
    2. {
    3.     struct DAUSACH tmp = DS1;
    4.     DS1 = DS2;
    5.     DS2 = tmp;
    6. }
    7.  
    8. void SapXepTang(DanhMucSach &DMS)
    9. {
    10.     for (int i=0; i<DMS.n-1; ++i)
    11.         for (int j=i+1; j<DMS.n; ++j)
    12.             if (strcmp(DMS.DMSach[i].TenSach,DMS.DMSach[j].TenSach)==1)
    13.                 HoanVi(DMS.DMSach[i],DMS.DMSach[j]);
    14. }

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

    cái lệnh strmp trong C, còn trong C++ thì là lệnh nào? còn lệnh so sánh chuỗi ký tự ở code trên là lệnh nào?
    VN

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

    Mặc định ai có code sắp xếp danh sách họ tên cho xem tham khảo với

    Trong C++ bạn có thể sử dụng lệnh strcmp

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

    Chuyển hộ mình code sau sang dạng sắp xếp theo họ tên với?
    Code:
    #include<iostream.h>
    #include<conio.h>
    #include<stdio.h>
    #include<string.h>
    #include<iomanip.h>
    class sinhvien
     {
      private:
       char *hoten;
       char *maSinhVien;
       int tuoi;
      public:
       sinhvien()
        {
         hoten=new char[20];
         maSinhVien=new char[20];
         tuoi=0;
         }
       sinhvien(char *hoten1,char *maSinhVien1,int tuoi1)
        {
         hoten=hoten1;
         maSinhVien=maSinhVien1;
         tuoi=0;
         }
       ~sinhvien()
        {
         delete hoten;
         delete maSinhVien;
        }
       const sinhvien &operator =(const sinhvien &sv2)
        {
         this->tuoi=sv2.tuoi;
         strcpy(this->hoten,sv2.hoten);
         strcpy(this->maSinhVien,sv2.maSinhVien);
         return sv2;
         }
        void nhap(int i);
        void in();
        int gettuoi()
        
         {
          return tuoi;
         }
        void hv(sinhvien &sv2)
         {
          sinhvien tg;
                tg=*this;
    	*this=sv2;
    	  sv2=tg;
          }
     };
     void sinhvien::in()
      {
    	cout <<"|  " << hoten <<"   |    "<<maSinhVien<<"     |    " <<tuoi<<"|\n";
     }
    
     void sinhvien::nhap(int i)
    	
            {
              
    	 cout<<"Nhap so sinh vien: "<<i;
        cout<<"\n  Ho ten : ";
    	cin >> hoten;
    	cout<<"\n Ma Sinh Vien : ";
    	cin >> maSinhVien;
    	
        cout<<"\n tuoi : ";cin>>tuoi;
    	 i++;
     
            }  
     
    void main()
     {
      sinhvien sv[100];
      int i,j,n;
      cout<<"\n Nhap vao so sinh vien :";cin>>n;
      for (i=1;i<=n;++i)
       sv[i].nhap(i);
      cout<<"\n danh sach sinh vien da nhap";
      cout<<"\n----------------------------------------------\n";
      for (i=1;i<=n;++i)
       sv[i].in();
       for (i=1;i<n;++i)
        for(j=i+1;j<=n;++j)
         if (sv[i].gettuoi() < sv[j].gettuoi())
          sv[i].hv(sv[j]);
    	  cout <<"_______________________________________________________\n";
          cout<<"\n danh sach sau khi sap xep";
    	  cout <<"\n----------------------------------------------\n";
        
      for (i=1;i<=n;++i)
          sv[i].in();
      getch();
     }
    VN

  8. #8
    Ngày gia nhập
    08 2008
    Bài viết
    15

    dạng bài này trên diễn đàn nhiều người hỏi rồi
    bạn chịu khó tìm đi

  9. #9
    Ngày gia nhập
    11 2008
    Bài viết
    21

    Bài cũ của mình:

    C++ Code:
    1. #include <iostream>
    2. #include <fstream>
    3. #include <string.h>
    4. #include <vector>
    5. #include <ctype.h>
    6.    
    7. template <class T>
    8. inline void Swap(T&a,T&b)
    9. {
    10.     T tmp=a;
    11.     a=b;
    12.     b=tmp;
    13. }
    14.  
    15. template <class T>
    16. void BubbleSort(vector<T>&v, int(*Compare)( T, T ) )
    17. {
    18.     for (char i = 0; i < v.size(); ++i)
    19.         for (char j = i + 1; j < v.size(); ++j)
    20.             if (Compare( v[j], v[i] ) < 0)
    21.                 Swap( v[j], v[i] );
    22. }
    23.  
    24. void FixName(char*s)
    25. {
    26.     for(char i=0;s[i]!='\0';++i)
    27.         if(i==0 || s[i-1]==' ')
    28.             s[i]=toupper(s[i]);
    29.         else s[i]=tolower(s[i]);
    30. }
    31.  
    32. char*ToWestern(const char*s)
    33. {
    34.     char*ptok,*name=new char[30];
    35.     strcpy(name,s);
    36.     char*tmp=new char[30];
    37.     tmp[0]='\0';
    38.    
    39.     ptok=strtok( name, " " );
    40.     while ( ptok != NULL )
    41.     {  
    42.         strcat( tmp, " ");
    43.         strcat( tmp, strrev( ptok ) );
    44.         ptok=strtok( NULL, " " );
    45.     }
    46.     strrev( tmp );
    47.     return tmp;
    48. }
    49.  
    50. int NameCmp(char*s1,char*s2 )
    51. {
    52.     return strcmpi(ToWestern( s1 ), ToWestern( s2 ));
    53. }
    54.  
    55. istream & operator >> (istream&in,vector<char*>&v)
    56. {
    57.     while ( in && !in.eof() )
    58.     {  
    59.         char*tmp=new char[30];
    60.         in.getline(tmp,30);
    61.         FixName(tmp);
    62.         v.push_back(tmp);
    63.     }
    64.     return in;
    65. }
    66. template <class T>
    67. ostream & operator << (ostream&out,vector<T> v)
    68. {
    69.     for(char i=0;i < v.size();++i)
    70.         out << v[i] << endl;
    71.     out << EOF;
    72.     return out;
    73. }
    74.  
    75. void main()
    76. {
    77.     fstream data;
    78.     data.open("in.txt", ios::in);
    79.     vector<char*> v;
    80.     data >> v;
    81.     data.close();
    82.    
    83.     cout << v;
    84.     cout << "\nsorting ..\n\n";
    85.    
    86.     BubbleSort(v,NameCmp);
    87.     data.open("out.txt", ios::out);
    88.     cout << v;
    89.     data << v;
    90.     data.close();
    91. }

    Vì hàm strcmp() hay strcmpi() so sánh tên người châu Âu (tên trước họ sau) tốt nên ta chỉ cần chuyển tử "tên Việt Nam" sang dạng đó là được.

    Hàm chuyển ở đây là hàm ToWestern() có sử dụng hàm đảo chuỗi strrev(), nối chuỗi strcat() và hàm tách từ strtok() trong string.h

    Mà bạn viết phần nhập tên thế kia không được rồi, thay vì dùng cin >> , bạn phải dùng cin.getline() vì tên sinh viên có dấu space.
    Đã được chỉnh sửa lần cuối bởi regist : 12-03-2009 lúc 07:54 AM.

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

  1. Bài tập C++ Xin code tham khảo, học hỏi !
    Gửi bởi thevu12 trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 4
    Bài viết cuối: 08-06-2013, 11:34 PM
  2. Bài tập C cách cộng 2 thời gian trong C, anh tham khảo chửa cái code giúp em!
    Gửi bởi tanphuc113 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: 29-10-2011, 05:15 PM
  3. Mạng phép xin code của anh em để tham khảo
    Gửi bởi shumo trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 4
    Bài viết cuối: 25-05-2010, 01:32 AM
  4. code phần mềm chơi nhạc bằng C#. Ai có cho mình tham khảo?
    Gửi bởi luckythief trong diễn đàn Thắc mắc lập trình C#
    Trả lời: 2
    Bài viết cuối: 04-03-2010, 05:28 PM
  5. [C] Cần hướng dẫn chi tiết và code tham khảo (nếu được) của các bài tập sau
    Gửi bởi thanhtungtnt trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 10-12-2007, 07:32 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