Tri alphabétique

Bonjour /bonsoir s'il vous plait je n'arrive pas à écrire un programme en c qui range 3 noms par ordre alphabétique j'ai besoin d'aide merci

4 réponses

  1. Bonjour,

    https://forums.commentcamarche.net/forum/affich-1896963-tri-par-ordre-alphabetique-en-c

    #include <string.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <iostream>
    #include <string.h>
    #define MAXN 30
    #define MAX_etu 150

    typedef struct etudiant {
    char nom[MAXN];
    char prenom[MAXN];
    float med;
    float final;
    float tp;
    }ETUDIANT;

    void initialise(ETUDIANT *tab_etu, int nb_etu);

    int recherchePosition(ETUDIANT* tab_etu,char nom1[MAXN],char prenom1[MAXN], int nbelements);
    int comparer(char* nom1, char* nom2);
    void insereNom(ETUDIANT *tab_etu, int nbelements,int pos);
    void affiche(ETUDIANT *tab, int nb_etu);

    int main()
    {
    ETUDIANT tab[MAX_etu];

    int nb_etu;
    float note;
    char reponse;
    int i=0,j=0;

    printf("entrez le nombre d'etudiants\n");
    scanf("%d",&nb_etu);
    fgetc(stdin);

    for(i=0;i<nb_etu;i++)
    {initialise(tab,i);//fonction déja définie
    j=recherchePosition(tab,tab[i].nom,tab[i].prenom,i);//c'est la fonction qui me pose le plus problème
    printf("----------valeur retournee vaut-----%d--------------\n\n",j);// juste pour avoir le resultat sous les yeux
    insereNom(tab,i+1, j);//pour inserer le dernier nom entré à la place qu'il doit occuper.
    }
    affiche(tab,nb_etu);//pour afficher le tableau
    }

    voici les fonctions que j'ai appelées sur le programme principal:

    int recherchePosition(ETUDIANT* tab_etu,char nom1[MAXN],char prenom1[MAXN], int nbelements)
    {
    // int n, m,k=0,i=0;

    int i;
    int j=0;
    for(i=0;i<=nbelements;i++)
    {
    if(strcmp((tab_etu[i].nom),nom1)<0)
    { j++;
    }
    }

    return j;
    }

    void insereNom(ETUDIANT *tab_etu, int nbelements,int pos)
    {
    int i,j=nbelements;
    i=pos; //recherchePosition(tab_etu,tab_etu[j-1].nom,tab_etu[j-1].prenom,nbelements);
    j=nbelements;
    while(j>i)

    {
    strcpy((tab_etu[j].nom),(tab_etu[j-1].nom));
    strcpy((tab_etu[j].prenom),(tab_etu[j-1].prenom));
    (tab_etu[j].med)=(tab_etu[j-1].med);
    (tab_etu[j].final)=(tab_etu[j-1].final);
    (tab_etu[j].tp)=(tab_etu[j-1].tp);
    j--;

    }
    strcpy((tab_etu[i].nom),tab_etu[j-1].nom);

    }

    void affiche(ETUDIANT *tab, int nb_etu)
    {
    int j;
    for(j=0;j<nb_etu;j++)
    {
    printf("\n%s",tab[j].nom);
    printf("\n%s",tab[j].prenom);
    prinf("\n%f",tab[j].med);
    prinf("\n%f",tab[j].final);
    prinf("\n%f",tab[j].tp);
    }
    }
    -1