Computer >> Máy Tính >  >> Lập trình >> lập trình C

Chương trình C để lưu trữ các bản ghi Sinh viên dưới dạng Cấu trúc và Sắp xếp chúng theo Tên


Trong bài toán này, chúng tôi nhận được một bản ghi của sinh viên có chứa student_id, student_name, student_percentage. Nhiệm vụ của chúng tôi là tạo một chương trình C để lưu trữ hồ sơ học sinh dưới dạng cấu trúc và sắp xếp chúng theo tên.

Hãy lấy một ví dụ để hiểu vấn đề,

Đầu vào - hồ sơ sinh viên =

{{ student_id = 1, student_name = nupur, student_percentage = 98},
{ student_id = 2, student_name = Akash, student_percentage = 75},
{ student_id = 3, student_name = Yash, student_percentage = 62},
{ student_id = 4, student_name = Jyoti, student_percentage = 87},
{ student_id = 5, student_name = Ramlal, student_percentage = 80}}

Đầu ra - hồ sơ sinh viên =

{{ student_id = 2, student_name = Akash, student_percentage = 75},
{ student_id = 4, student_name = Jyoti, student_percentage = 87},
{ student_id = 1, student_name = nupur, student_percentage = 98},
{ student_id = 5, student_name = Ramlal, student_percentage = 80},
{ student_id = 3, student_name = Yash, student_percentage = 62}}

Để giải quyết vấn đề này, trước tiên chúng ta sẽ tạo một cấu trúc sẽ lưu trữ các thông tin chi tiết của học sinh. Bây giờ, chúng ta sẽ sử dụng qsort () và trong qsort đó, chúng ta sẽ định nghĩa một hàm so sánh cho qsort này, hàm này sẽ so sánh tên của cấu trúc bằng cách sử dụng phương thức strcmp ().

Ví dụ

Chương trình lưu trữ hồ sơ Sinh viên dưới dạng Cấu trúc và Sắp xếp chúng theo Tên

//C program to store Student records as Structures and Sort them by Name
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Student {
   int student_id;
   char* student_name;
   int student_percentage;
};
int comparator(const void* s1, const void* s2){
   return strcmp(((struct Student*)s1)->student_name,((struct Student*)s2)->student_name);
}
int main() {
   int n = 5;
   struct Student arr[n];
   //student 1
   arr[0].student_id = 1;
   arr[0].student_name = "Nupur";
   arr[0].student_percentage = 98;
   //student 2
   arr[1].student_id = 2;
   arr[1].student_name = "Akash";
   arr[1].student_percentage = 75;
   //student 3
   arr[2].student_id = 3;
   arr[2].student_name = "Yash";
   arr[2].student_percentage = 62;
   //student 4
   arr[3].student_id = 4;
   arr[3].student_name = "Jyoti";
   arr[3].student_percentage = 87;
   //student 5
   arr[4].student_id = 5;
   arr[4].student_name = "Ramlal";
   arr[4].student_percentage = 80;
   printf("Unsorted Student Record:\n");
   for (int i = 0; i < n; i++) {
      printf("Id = %d, Name = %s, Age = %d \n", arr[i].student_id, arr[i].student_name, arr[i].student_percentage);
   }
   qsort(arr, n, sizeof(struct Student), comparator);
   printf("\n\nStudent Records sorted by Name:\n");
   for (int i = 0; i < n; i++) {
      printf("Id = %d, Name = %s, Age = %d \n", arr[i].student_id, arr[i].student_name, arr[i].student_percentage);
   }
   return 0;
}

Đầu ra

Unsorted Student Record:
Id = 1, Name = Nupur, Age = 98
Id = 2, Name = Akash, Age = 75
Id = 3, Name = Yash, Age = 62
Id = 4, Name = Jyoti, Age = 87
Id = 5, Name = Ramlal, Age = 80
Student Records sorted by Name:
Id = 2, Name = Akash, Age = 75
Id = 4, Name = Jyoti, Age = 87
Id = 1, Name = Nupur, Age = 98
Id = 5, Name = Ramlal, Age = 80
Id = 3, Name = Yash, Age = 62