Gestion d’une liste de livres triée par auteur utilisant Insertion Sort

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

Brève Introduction

Gestion d’une liste de livres triée par auteur utilisant Insertion Sort (c)
DESCRIPTION :
Ce programme en C gère une liste de livres, chacun avec un titre et un auteur, et les trie en fonction du nom de l'auteur en utilisant l'algorithme de tri Insertion Sort. C'est un exemple complet et robuste montrant comment manipuler des tableaux de structures, comparer des chaînes et implémenter un algorithme de tri classique.

NOTES SUPPLÉMENTAIRES :
Le programme est conçu pour être simple mais complet, adapté à ceux ayant une connaissance basique à intermédiaire du C. Le tri Insertion Sort est choisi pour sa simplicité pédagogique, bien qu'il ne soit pas le plus efficace pour de grands ensembles de données. Le tableau de livres est statique et dimensionné à 5 éléments pour la simplicité, mais peut être facilement étendu. Aucune bibliothèque externe ni configuration particulière n'est requise.

EXPLICATIONS :
- La structure 'Libro' contient deux chaînes pour le titre et l'auteur, chacune avec une longueur maximale définie par MAX_LEN.
- La fonction 'stampaLibri' parcourt le tableau et affiche chaque livre avec son indice, titre et auteur.
- L'algorithme Insertion Sort parcourt le tableau de gauche à droite, insérant chaque élément à la position correcte par rapport aux éléments précédents en comparant les auteurs avec strcmp.
- Dans main, le tableau de livres est initialisé avec des données fixes pour démonstration, puis affiché avant et après le tri.
- La fonction strcmp retourne une valeur supérieure à zéro si la première chaîne est lexicographiquement plus grande que la seconde, utilisée pour décider le déplacement des livres lors du tri.

Code d'Exemple : c

#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;
}
×
×
×
Veux-tu régénérer la réponse ?
×
Exporter le chat
Choisissez le format d'export
⏳ Generazione PDF in corso…
Allegati
×
⚠️ Vous êtes sur le point de fermer le chat et de passer au générateur d’images. Si vous n’êtes pas connecté, vous perdrez notre conversation. Confirmez-vous ?
👁 Tu consultes une discussion partagée en mode temporaire. Elle ne sera pas enregistrée.
💬
×
Prompts enregistrés
×
Note privée
×
Étiquette
×
Rechercher dans toutes les discussions
×
Vos insights
Analyse en cours…
×
Préférences IA
Nom de l'assistant 30
Longueur des réponses
Modèle IA
Réponses structurées
Inclure des exemples
Utiliser des emojis
Guide-moi, ne résous pas Des indices et des questions plutôt que la réponse toute faite
Plus de réglages →
×
Partager cette discussion
Toute personne ouvrant ce lien pourra consulter la discussion ou l'ajouter à son profil comme discussion personnelle.
⚠️ Attention : les pièces jointes de la discussion seront également partagées. Qui l'ajoutera recevra une copie des fichiers dans son dossier.
Discussion partagée
Quelqu'un a partagé une discussion avec toi. Veux-tu seulement la consulter ou l'ajouter à tes discussions ?
⚠️ Attention : les pièces jointes de la discussion seront également partagées. Qui l'ajoutera recevra une copie des fichiers dans son dossier.
×

📌 Messages enregistrés

Chargement...

×

Historique des discussions

programmes-exemples · HISTORIQUE DU CHAT

Chargement...

Préférences IA

×
  • 🟢 BasiqueRéponses rapides et essentielles pour étudier
  • 🔵 MoyenQualité supérieure pour étude et programmation
  • 🟣 AvancéRaisonnement complexe et analyses détaillées
Expliquer les étapes

Qu'est-ce qu'il faut ?

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).

Sujets Similaires

Comptage des caractères d’une chaîne sans utiliser strlen
Exemple en C pour compter les caractères d’une chaîne sans utiliser strlen, en parcourant manuellement jusqu’au caractère de fin ’\’.
Vérifier si une année est bissextile (version simple)
Programme en C simple pour vérifier si une année est bissextile selon la règle de base divisible par 4, idéal pour débutants en programmation C.
Affichage des N premiers nombres naturels choisis par l’utilisateur
Programme en C affichant les N premiers nombres naturels saisis par l’utilisateur avec gestion des erreurs pour entrées non valides.
Calcul de la puissance d’un entier avec une boucle en C
Programme en C pour calculer la puissance d’un entier avec une boucle for, gérant les exposants entiers non négatifs et affichant le résultat.
Programme qui compte les voyelles dans une chaîne
Programme en C qui lit une chaîne et compte les voyelles en gérant majuscules et minuscules avec fgets et tolower pour une saisie sécurisée.
Programme qui remplace les espaces par des underscores dans une chaîne
Programme en C qui remplace les espaces par des underscores dans une chaîne. Exemple simple avec fonction modulaire et lecture sécurisée via fgets.
Gestion d’une liste d’étudiants avec structures et tri par note
Exemple en C pour gérer une liste d’étudiants avec structures et trier par note finale via qsort, facile à étendre et utiliser en environnement standard.
Carnet téléphonique textuel avec recherche par nom et sauvegarde dans un fichier
Programme en C pour carnet téléphonique textuel avec ajout, recherche insensible à la casse, affichage et sauvegarde dans un fichier texte.