Results 1 to 8 of 8
  1. #1
    Join Date
    Nov 2013
    Location
    KTX-ĐHQG.TPHCM
    Posts
    1,664,724
    Thanks
    5
    Thanked 9 Times in 9 Posts

    [c] Sắp xếp theo điểm sinh viên

    dragoncl12
    Thành viên mới
    Ngày gia nhập: 03 2007
    Bài viết: 10
    -------------------------
    [c] Sắp xếp theo điểm sinh viên
    các bạn có thể chỉ giúp cho mình cái hàm để sắp xếp sinh viên theo điểm và xếp hạng(từ cao đến thấp) được ko.xim cám ơn.

  2. #2
    Join Date
    Nov 2013
    Location
    KTX-ĐHQG.TPHCM
    Posts
    1,664,724
    Thanks
    5
    Thanked 9 Times in 9 Posts
    neverland87
    VIP Member
    Ngày gia nhập: 01 2007
    Bài viết: 412
    -------------------------
    Trích dẫn:
    Nguyên bản được gửi bởi dragoncl12
    các bạn có thể chỉ giúp cho mình cái hàm để sắp xếp sinh viên theo điểm và xếp hạng(từ cao đến thấp) được ko.xim cám ơn.
    Bạn nói chung chung quá, bạn có thể nói rõ đề bài hơn 1 chút được không, điểm thì cũng phải có điểm toán,lý,hóa,gì gì đó, xếp hạng thì gồm những hạng nào.

    Về vấn đề sắp xếp, có rất nhiều giải thuật, và những cái này đã được đề cập rất nhiều trong diễn đàn. Bạn nên search để biết thêm chi tiết.

  3. #3
    Join Date
    Nov 2013
    Location
    KTX-ĐHQG.TPHCM
    Posts
    1,664,724
    Thanks
    5
    Thanked 9 Times in 9 Posts
    dragoncl12
    Thành viên mới
    Ngày gia nhập: 03 2007
    Bài viết: 10
    -------------------------
    à là như vầy: nhập vào danh sách n sinhviên: tên,họ,ngàysinh,điểm,giới tính và in ra danh sách sinhviên,sau đó in ra sinh viên nào có số điểm(vidụ: 9) cao nhất và xếp hạng sinh viên đứng 1,2,3...

  4. #4
    Join Date
    Nov 2013
    Location
    KTX-ĐHQG.TPHCM
    Posts
    1,664,724
    Thanks
    5
    Thanked 9 Times in 9 Posts
    kidkid
    XCoworker Member
    Ngày gia nhập: 10 2006
    Nơi ở: In Your Bugs
    Bài viết: 822
    -------------------------
    Uhm Hàm nhập và xuất chắc dragon làm được rồi nhỉ ?

    Còn xuất ra sinh viên cao nhất thì

  5. #5
    Join Date
    Nov 2013
    Location
    KTX-ĐHQG.TPHCM
    Posts
    1,664,724
    Thanks
    5
    Thanked 9 Times in 9 Posts
    phamtuananh
    Khách

    Bài viết: n/a
    -------------------------
    Chắc ý của bạn là tìm kiếm sau đó in ra rồi có phải không?

    Dùng thuật toán tìm kiếm tuyến tính đi cho đơn giản.

    còn nếu bạn giỏi hơn thì bạn dùng tìm kiếm nhị phân(phải sắp xếp theo thứ tự trước rồi mới dùng thuật toán này dc).

    Trong cuốn cấu trúc dữ liệu tập 1 có hướng dẫn hai thuật toán này chi tiết lắm!

  6. #6
    Join Date
    Nov 2013
    Location
    KTX-ĐHQG.TPHCM
    Posts
    1,664,724
    Thanks
    5
    Thanked 9 Times in 9 Posts
    neverland87
    VIP Member
    Ngày gia nhập: 01 2007
    Bài viết: 412
    -------------------------
    Trích dẫn:
    Nguyên bản được gửi bởi dragoncl12
    à là như vầy: nhập vào danh sách n sinhviên: tên,họ,ngàysinh,điểm,giới tính và in ra danh sách sinhviên,sau đó in ra sinh viên nào có số điểm(vidụ: 9) cao nhất và xếp hạng sinh viên đứng 1,2,3...
    Hi, có lẽ bài này bạn dùng mảng có kiểu cấu trúc, theo như đề bài thì bạn có cấu trúc sau:

    Code:
    Code:
     struct HoSo
    {
     char ten[15];
     char ho[10];
     NgayThang ngaysinh; //ngaysinh có kiểu cấu trúc ngày,tháng,năm
     float diem;
     int gioitinh; //1 là nam,0 là nữ
    }
    Nhưng vì bạn cần xếp hạng học sinh,nên mình nghĩ bạn nên thêm 1 thuộc tính hang (kiểu int) trong cấu trúc nêu trên. Lưu ý: lúc cho nhập hồ sơ của n sinh viên, bạn không cần phải nhập hạng.

    Sau khi đã nhập đầy đủ hồ sơ rồi, bạn tiến hành sắp xếp lại mảng cấu trúc theo thứ tự giảm dần (hoặc tăng dần tùy bạn).

    Giả sử mình có mảng cấu trúc: HoSo hs[100]; và dùng Bubble Sort để sắp xếp mảng này theo thứ tự tăng dựa trên chỉ số so sánh là thuộc tính diem

    Code:
    Code:
     for(int i=0;i<n-1;i++)
     for (int j=i+1;j<n;j++)
     if (hs[i].diem<hs[j].diem) HoanVi(hs[i].diem,hs[j].diem);
    Hê, bây giờ bạn thừa biết như thế nào rồi đó, phần tử đầu tiên của mảng chứa học sinh có điểm số cao nhất ^ ^

    Ok,xong bước 1,bây giờ tới vụ xếp hạng, bạn chỉ cần dùng vòng lặp là ra được hạng của học sinh

    Code:
    Code:
     for(int i=0;i<n;i++)
     hs[i].hang=i+1;
    Bây giờ, công việc còn lại của bạn là in ra màn hình thôi, cái này thì bạn tự lo nhé, tất nhiên là bạn có thể cải tiến chương trình của bạn hơn những gì mình đã nói.

  7. #7
    Join Date
    Nov 2013
    Location
    KTX-ĐHQG.TPHCM
    Posts
    1,664,724
    Thanks
    5
    Thanked 9 Times in 9 Posts
    neverland87
    VIP Member
    Ngày gia nhập: 01 2007
    Bài viết: 412
    -------------------------
    Ấy chết, ở trên mình ghi lộn hàm Bubble Sort, mình sửa lại nhé

    Code:
    Code:
     for(int i=0;i<n-1;i++)
     for (int j=i+1;j<n;j++)
     if (hs[i].diem<hs[j].diem) HoanVi(hs[i],hs[j]);

  8. #8
    Join Date
    Nov 2013
    Location
    KTX-ĐHQG.TPHCM
    Posts
    1,664,724
    Thanks
    5
    Thanked 9 Times in 9 Posts
    dragoncl12
    Thành viên mới
    Ngày gia nhập: 03 2007
    Bài viết: 10
    -------------------------
    mình làm theo ý tưởng mà các bạn đã viết,nhưng lúc làm xong thì nó in ra lại không khớp với tên ,như nó chỉ có sắp xếp số điểm từ cao đến thấp mà thôi,tên nó không theo cùng.

    vi dụ:

    inds :tên điểm saukhisapxếp: tên điểm


    Bao 8.00 Bao 9.00

    Doan 7.00 Doan 8.00

    Dung 6.00 Dung 7.00

    Minh 9.00 Minh 6.00


    các bạn giúp sữa lại lỗi này nhé.

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •