Maison >développement back-end >C++ >Le programme C stocke les dossiers des étudiants dans une structure et les trie par nom

Le programme C stocke les dossiers des étudiants dans une structure et les trie par nom

王林
王林avant
2023-08-26 15:17:061114parcourir

Le programme C stocke les dossiers des étudiants dans une structure et les trie par nom

Dans cette question, nous recevons le dossier d'un étudiant qui contient le numéro d'étudiant, le nom et le pourcentage. Notre tâche est de créer un programme C qui stocke les dossiers des étudiants sous forme de structures et les trie par nom.

Prenons un exemple pour comprendre ce problème,

Input - Student Record =

{{ 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}}

Output − Student Record =

{{ 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}}

Pour résoudre ce problème, nous allons d'abord créer une structure de stockage des détails de l'étudiant . Maintenant, nous allons utiliser la fonction qsort() et dans cette fonction définir une fonction de comparaison qui comparera les noms des structures à l'aide de la méthode strcmp().

Exemple

Programme pour stocker les dossiers des étudiants sous forme de structure et trier par nom

Démo en ligne

//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:</p><p>");
   for (int i = 0; i < n; i++) {
      printf("Id = %d, Name = %s, Age = %d </p><p>", arr[i].student_id, arr[i].student_name, arr[i].student_percentage);
   }
   qsort(arr, n, sizeof(struct Student), comparator);
   printf("</p><p></p><p>Student Records sorted by Name:</p><p>");
   for (int i = 0; i < n; i++) {
      printf("Id = %d, Name = %s, Age = %d </p><p>", arr[i].student_id, arr[i].student_name, arr[i].student_percentage);
   }
   return 0;
}

Sortie

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer