Sắp xếp Struct trong C



Bài tập C: Sắp xếp các Struct dựa vào bất kỳ phần tử nào của Struct

Giả sử một giải đấu thể thao sinh viên đấu vòng tròn có 10 sinh viên tham gia. Mỗi sinh viên thuộc một đội khác nhau và sinh viên có các thông tin: tên đội (tname), tên sinh viên (pname), điểm số (avg). Khai báo một mảng các sinh viên. Yêu cầu là hãy sắp xếp các sinh viên này dựa trên bất kỳ tiêu chí nào ở trên (ví dụ sắp xếp theo tên đội, tên sinh viên hoặc điểm số đạt được).

Chương trình C

Dưới đây là chương trình C để giải bài tập sắp xếp các Struct dựa vào bất kỳ phần tử nào của Struct trong C:

#include
#includestruct tennis {
   char pname[20];
   char tname[20];
   int avg;
} player[3], temp;int main() {
   int i, j, n;   for (i = 0; i < 3; i++) {
      printf("\nNhap ten nguoi choi: ");
      scanf("%s", &player[i].pname);
      printf("\nNhap ten truong: ");
      scanf("%s", &player[i].tname);
      printf("\nNhap diem so: ");
      scanf("%d", &player[i].avg);
      printf("\n");
   }
   n = 3;   for (i = 1; i < n; i++)
      for (j = 0; j < n - i; j++) {
         if (strcmp(player[j].tname, player[j + 1].tname) > 0) {
            temp = player[j];
            player[j] = player[j + 1];
            player[j + 1] = temp;
         }
      }   for (i = 0; i < n; i++) {
      printf("\n%s\t%s\t%d",player[i].pname,player[i].tname,player[i].avg);
   }
   return(0);
}

Biên dịch chương trình C trên sẽ cho kết quả:

Sắp xếp struct trong C
bai-tap-struct-trong-c.jsp