इस समस्या में, हमें एक छात्र का रिकॉर्ड दिया जाता है जिसमें छात्र_आईडी, छात्र_नाम, छात्र_प्रतिशत होता है। हमारा काम छात्र रिकॉर्ड को संरचना के रूप में संग्रहीत करने और उन्हें नाम से क्रमबद्ध करने के लिए एक सी प्रोग्राम बनाना है।
समस्या को समझने के लिए एक उदाहरण लेते हैं,
इनपुट - छात्र रिकॉर्ड =
{{ 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}}
आउटपुट - छात्र रिकॉर्ड =
{{ 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}}
इस समस्या को हल करने के लिए, हम पहले एक संरचना बनाएंगे जो छात्र के विवरण को संग्रहीत करेगी। अब, हम qsort() का उपयोग करेंगे और उस qsort में, हम इस qsort के लिए एक तुलनित्र फ़ंक्शन को परिभाषित करेंगे जो strcmp() विधि का उपयोग करके संरचना के नामों की तुलना करेगा।
उदाहरण
छात्र रिकॉर्ड को संरचनाओं के रूप में संग्रहीत करने और उन्हें नाम से क्रमबद्ध करने का कार्यक्रम
//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; }
आउटपुट
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