Programme en C pour gérer et trier une liste de livres par auteur avec l’algorithme Insertion Sort, idéal pour apprendre la manipulation de structures et le tri
#include <stdio.h>
#include <string.h>
#define MAX_LIBRI 5
#define MAX_LEN 100
// Définition de la structure Libro avec titre et auteur
typedef struct {
char titolo[MAX_LEN];
char autore[MAX_LEN];
} Libro;
// Fonction pour afficher la liste des livres
void stampaLibri(Libro libri[], int n) {
printf("Liste des livres :\n");
for (int i = 0; i < n; i++) {
printf("%d. '%s' de %s\n", i + 1, libri[i].titolo, libri[i].autore);
}
printf("\n");
}
// Fonction de tri Insertion Sort basée sur le champ auteur
void insertionSort(Libro libri[], int n) {
for (int i = 1; i < n; i++) {
Libro key = libri[i]; // Livre à insérer à la position correcte
int j = i - 1;
// Compare les auteurs et déplace les livres plus grands que key vers la droite
while (j >= 0 && strcmp(libri[j].autore, key.autore) > 0) {
libri[j + 1] = libri[j];
j--;
}
libri[j + 1] = key; // Insère le livre à la position correcte
}
}
int main() {
// Initialisation d'un tableau de livres avec des données d'exemple
Libro libri[MAX_LIBRI] = {
{"Il nome della rosa", "Umberto Eco"},
{"Cent'anni di solitudine", "Gabriel Garcia Marquez"},
{"La coscienza di Zeno", "Italo Svevo"},
{"Il Gattopardo", "Giuseppe Tomasi di Lampedusa"},
{"Se questo è un uomo", "Primo Levi"}
};
printf("Avant le tri :\n");
stampaLibri(libri, MAX_LIBRI);
// Tri des livres par auteur
insertionSort(libri, MAX_LIBRI);
printf("Après le tri par auteur :\n");
stampaLibri(libri, MAX_LIBRI);
return 0;
}Structure 'Libro' contenant deux champs chaîne : titre et auteur.
Tableau statique de livres avec taille définie (MAX_LIBRI).
Fonction 'insertionSort' pour trier le tableau de livres selon le champ auteur.
Fonction 'stampaLibri' pour afficher la liste des livres.
Utilisation des bibliothèques standard <stdio.h> pour entrée/sortie et <string.h> pour fonctions sur les chaînes.
Aucune dépendance externe ou bibliothèque supplémentaire requise.
Configuration logicielle : compilateur C standard (gcc, clang, etc.) sans options particulières.
Aucun branchement matériel ou câblage requis (programme console).