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

Đề tài: Sắp xếp tên bằng bubble sort

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

    Mặc định Sắp xếp tên bằng bubble sort

    Cài đặt danh sách đặc sinh viên ( mã số, họ tên).
    a. Sắp xếp mã số sinh viên bằng thuật toán Insertion sort
    b. Sắp xếp tên sinh viên bằng thuật toán nổi bọt

    void bubblesort(list &l)
    {
    printf("Sap xep theo ten sinh vien: \n\n");
    for (int i=0;i<l.n-1;i++)
    for (int j=i+1;j<l.n;j++)
    if (strcmp(l.sv[i].hoten,l.sv[j].hoten)>0)
    swap(l.sv[i],l.sv[j]);
    }
    Đã được chỉnh sửa lần cuối bởi vicz_0311 : 17-10-2011 lúc 06:28 PM.

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

    Bạn đã định nghĩa hàm swap đâu ?
    Lúc debug chắc chắn trình biên dịch sẽ báo ngay cái lỗi đó.
    Định nghĩa nó đi

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

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    Bạn đã định nghĩa hàm swap đâu ?
    Lúc debug chắc chắn trình biên dịch sẽ báo ngay cái lỗi đó.
    Định nghĩa nó đi
    hàm swap có trong thư viện vc 2010 rồi mà b

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

    Trích dẫn Nguyên bản được gửi bởi vicz_0311 Xem bài viết
    hàm swap có trong thư viện vc 2010 rồi mà b
    À ^^ Quên mất dùng VC++ .
    Chờ tí mình debug thử phát xem
    ------------
    Đây rồi, vấn đề là bạn so sánh 2 chuỗi mà lại dùng toán tử < > của tập số thì làm sao dc . Nếu như vậy thì tức là bạn đang so sánh địa chỉ của 2 con trỏ.
    Dùng strcmp đi nhé .
    if (strcmp(l.sv[j].hoten,l.sv[j-1].hoten)==-1)
    swap(l.sv[j],l.sv[j-1]);

    Bạn thử lại xem
    Đã được chỉnh sửa lần cuối bởi clchicken : 17-10-2011 lúc 04:58 PM.

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

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    À ^^ Quên mất dùng VC++ .
    Chờ tí mình debug thử phát xem
    ------------
    Đây rồi, vấn đề là bạn so sánh 2 chuỗi mà lại dùng toán tử < > của tập số thì làm sao dc . Nếu như vậy thì tức là bạn đang so sánh địa chỉ của 2 con trỏ.
    Dùng strcmp đi nhé .
    if (strcmp(l.sv[j].hoten,l.sv[j-1].hoten)==-1)
    swap(l.sv[j],l.sv[j-1]);

    Bạn thử lại xem
    Tks bạn nha mình sửa được rồi

  6. #6
    Ngày gia nhập
    01 2011
    Nơi ở
    \WINDOWS\Assembly\
    Bài viết
    54

    Mặc định Sắp xếp tên bằng bubble sort

    Trích dẫn Nguyên bản được gửi bởi vicz_0311 Xem bài viết
    hàm swap có trong thư viện vc 2010 rồi mà b
    bạn không nên quá phụ thuộc vào ngôn ngữ lập trình. Tôt nhất theo mình nghĩ là nên tự viết giải thuật của riếng mình rồi mới sử dụng lại hàm chuẩn xem nó có hiệu quả như nhau không.

  7. #7
    Ngày gia nhập
    11 2010
    Nơi ở
    hell
    Bài viết
    165

    Trích dẫn Nguyên bản được gửi bởi taller Xem bài viết
    bạn không nên quá phụ thuộc vào ngôn ngữ lập trình. Tôt nhất theo mình nghĩ là nên tự viết giải thuật của riếng mình rồi mới sử dụng lại hàm chuẩn xem nó có hiệu quả như nhau không.
    nhiều cái thì nên thế này.nhiều cái thì nên cái khác.cũng tuỳ thôi mà hehe miễn sao mình thấy hợp lý vs phong cách của mình thôi.
    HT117-5277

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

    Trích dẫn Nguyên bản được gửi bởi clchicken Xem bài viết
    À ^^ Quên mất dùng VC++ .
    Chờ tí mình debug thử phát xem
    ------------
    Đây rồi, vấn đề là bạn so sánh 2 chuỗi mà lại dùng toán tử < > của tập số thì làm sao dc . Nếu như vậy thì tức là bạn đang so sánh địa chỉ của 2 con trỏ.
    Dùng strcmp đi nhé .
    if (strcmp(l.sv[j].hoten,l.sv[j-1].hoten)==-1)
    swap(l.sv[j],l.sv[j-1]);

    Bạn thử lại xem
    mình mới nhập môn nên chưa hiểu sao lại so sánh với -1 vậy ban? hic hic

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

    Trích dẫn Nguyên bản được gửi bởi sg_alone Xem bài viết
    mình mới nhập môn nên chưa hiểu sao lại so sánh với -1 vậy ban? hic hic
    Bạn có cài Turbo C chứ ? .
    Gõ cái strcmp lên rồi click phải vào, xem chú thích của nó. ^^
    Đó cũng là cách để bạn hiểu về 1 hàm, ngay trong tầm tay bạn . Đây là cách tích cực nhất
    Cách khác là đọc tài liệu , cụ thể là giáo trình về phần CHUỖI cũng giúp bạn hiểu . Cũng là 1 cách tích cực Tuy nhiên cách này ko tích cực = cách trên
    Nếu 2 cách trên vẫn chưa hiểu, bạn có thể lên đây hỏi lại hoặc tra google. . Đây có thể coi là cách cuối , hoặc "gần cuối" . Bởi nó chỉ giúp bạn trả lời chính 1 vấn đề bạn muốn, còn tổng quát cách giải quyết những vấn đề tương tự nó ko giúp bạn dc . Cách đầu tiên sẽ giúp bạn nhiều hơn
    Đã được chỉnh sửa lần cuối bởi clchicken : 19-10-2011 lúc 11:41 AM.

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

    Trích dẫn Nguyên bản được gửi bởi sg_alone Xem bài viết
    mình mới nhập môn nên chưa hiểu sao lại so sánh với -1 vậy ban? hic hic
    hàm strcmp()
    C Code:
    1. #include <string.h>
    2. int strcmp( const char *str1, const char *str2 );
    So sánh 2 chuỗi 'str1' và 'str2'
    Giá trị trả về :
    C Code:
    1. < 0 : str1 < str2
    2. = 0 : str1 = str2
    3. > 0 : str1 > str2

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

  1. Bài tập C Giải thuật Bubble Sort , Insertion Sort
    Gửi bởi cts2x trong diễn đàn Nhập môn lập trình C/C++
    Trả lời: 3
    Bài viết cuối: 28-12-2013, 11:31 PM
  2. Lập trình C Cách hoạt động của thuật toán Selection Sort và Bubble Sort như thế nào?
    Gửi bởi kuin0903 trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 4
    Bài viết cuối: 26-07-2011, 10:39 AM
  3. Chương trình minh họa bubble sort, bị lỗi?
    Gửi bởi lamvantu trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 11
    Bài viết cuối: 30-09-2010, 04:10 PM
  4. Cần hỗ trợ về Bubble Sort (Săp xếp nổi bọt)
    Gửi bởi NgocTuanz trong diễn đàn Nhập môn lập trình C#, ASP.NET
    Trả lời: 5
    Bài viết cuối: 10-05-2010, 08:41 PM
  5. Các thuật toán sắp xếp mảng | Bubble sort, Shak sort, Insertion sort, Selection, ...
    Gửi bởi kids trong diễn đàn Thắc mắc lập trình C/C++/C++0x
    Trả lời: 2
    Bài viết cuối: 11-04-2009, 10:05 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