Recherche un algo de tri pour mon programme

Résolu/Fermé
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019 - Modifié par NHenry le 21/04/2016 à 19:55
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019 - 25 mai 2016 à 12:58
bonsoir ,
dans un programme de calcul de moyennes que j'ai écris a la fin de mon programme la moyenne de chaque étudiant est dans un tableau que j'ai déclarer dans mon typesdef, pour le terminer je recherche un algo qui me permettrait que classer ces étudiant selon leur moyenne obtenue dans ingenieur[index].moygenerale[j]
voici ma fonction qui calcul les moyennes

void calculMoyenne_Ingenieur(Ingenieur ingenieur[], unsigned int index , unsigned int nb_moyennes)
{
   int j;
   for(j=0;j<nb_moyennes;j++)
   {
      ingenieur[index].moygenerale[j]=(ingenieur[index].moyenne_avec_coefficient/ingenieur[index].TotalDesCoefficient);
   }
}

void calculMoyenne(Ingenieur ingenieur[], unsigned int nb_ingenieurs, unsigned int nb_moyennes)
{  int i;
   for(i=0;i<nb_ingenieurs;i++)
   {
     calculMoyenne_Ingenieur(ingenieur,i,nb_moyennes);
   }
}

void afficheMoyenne_Ingenieur(Ingenieur ingenieur[], unsigned int index , unsigned int nb_moyennes)
{
   int j;
   for(j=0;j<Ingenieur_Moyenne_Generele;j++)
   {
        printf( "La moyenne de : \n"  );
        printf("%s est = ",ingenieur[index].nom);
        printf("\n\n");
        printf("                                           \n");
        printf("  ......................................   \n");
        printf("               est %f                      \n",ingenieur[index].moygenerale[j]
);
        printf("  ......................................   \n");
   }
}

void afficheMoyenne(Ingenieur ingenieur[], unsigned int nb_ingenieurs, unsigned int nb_moyennes)
{
  int i;
   for(i=0;i<nb_ingenieurs;i++)
   {
      afficheMoyenne_Ingenieur(ingenieur,i,nb_moyennes);
   }
}
A voir également:

4 réponses

Dalfab Messages postés 706 Date d'inscription dimanche 7 février 2016 Statut Membre Dernière intervention 2 novembre 2023 101
21 avril 2016 à 20:31
Bonjour,

Il existe de nombreux algorithmes de tri, pour un nombre raisonnable d'ingénieurs, un tri par insertion est suffisant.
Le problème est que dans ton exemple chaque ingenieur a plusieurs moygenerale qui sont dans un tableau, alors sur laquelle trier?
0
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019
22 avril 2016 à 10:07
non chaque ingénieur a une seule moyenne générale. le probleme est que je ne maitrise pas totalement les algo de tri qui me permettrait des les classer selon leur moyenne
0
Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 645
Modifié par Pierre1310 le 22/04/2016 à 10:12
Bonjour,

Un algo qui peut fonctionner, par ordre croissant.

Pour i allant de 0 à la fin de ton tableau
    Pour b allant de 0 à la fin de ton tableau
         si i -> 0 alors
            si tab[j]<tab[i] alors
                   tab[i] = tab[j]
            fin si
         sinon
            si tab[j]<tab[i]  ET tab[j]>tab[i-1]alors
                   tab[i] = tab[j]
            fin si
    fin pour
fin pour
0
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019 > Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020
22 avril 2016 à 10:26
merci je vais essayer de l'adapter a mon programme,
0
Pierre1310 Messages postés 8554 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 645
22 avril 2016 à 10:28
Tiens moi au courant, ça fait un moment que je n'ai plus touché à du C ^^'
0
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019
22 avril 2016 à 10:30
comment je pourrait utiliser un tableau lorsqu’on l'a déclarer auparavant dans un typedef


typedef struct
{
double moygenerale[MAX_ELEVES];
}Ingenieur;
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
22 avril 2016 à 12:33
Salut akybienvenu,

La bibliothèque standard du C dispose de qsort.

http://www.cplusplus.com/reference/cstdlib/qsort/


Dal
0
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019
Modifié par akybienvenu le 25/05/2016 à 13:01
bonjour, merci j'ai pu trouver un programme me permettant de faire mes tri . qui permet aussi de gérer mon classement.
0
akybienvenu Messages postés 48 Date d'inscription samedi 26 décembre 2015 Statut Membre Dernière intervention 4 novembre 2019
25 mai 2016 à 12:58



void enrgMoyennes(Ingenieur ingenieur[],double table[], unsigned int nb_ingenieurs)
{
size_t i;
for(i = 0; i < nb_ingenieurs; i++)
{
table[i]=ingenieur[i].moygenerale;
}
}
void echanger(double table[], size_t i)
{ size_t tmp;
tmp = table[i];
table[i] = table[i+1];
table[i+1] = tmp;
}
void trierMoyennes(double table[], unsigned int nb_ingenieurs)
{
size_t i, j;
for( i=0;i<nb_ingenieurs-1;i++)
{
for( j=0;j<nb_ingenieurs;j++)
{
if(table[i]<table[i+1])
{
echanger(table,i);
}
}
}
}
void affichetable(Ingenieur ingenieur[],double table[], unsigned int nb_ingenieurs)
{
size_t i,j;
enrgMoyennes(ingenieur,table, nb_ingenieurs);
trierMoyennes(table, nb_ingenieurs);
printf("voici le classement des ingenieurs\n\n");
for(i = 0; i < nb_ingenieurs; i++)
{
for(j = 0; j < nb_ingenieurs; j++)
{
if(table[i]==ingenieur[j].moygenerale)
{
printf("%s %f \n\n",ingenieur[j].nom,ingenieur[j].moygenerale);
}
}
}
printf("Ce programme a ete compile le %s a %s\n", __DATE__, __TIME__);

}
0