Tri nom

bonjour,la boucle tourne qu'une seule fois
typedef struct eleve
  {
     char nom[ligne][colone];
     int age;
     float moy;
     float note[3];
     float rang;

  }eleve;
void ajouter()
{
  eleve individu[100];
  int n,i;
  float som=0;

  printf("entrer le nombre delts:");scanf("%d",&n);
    for(i=0;i<n;i++)
    {

       printf("entrer le nom:");scanf("%s",&individu[i].nom);
       printf("entrer son age:");scanf("%d",&individu[i].age);
       printf("entrer ses note\n");
       printf("\tmath:");scanf("%f",&individu[i].note[0]);
       printf("\tphy:");scanf("%f",&individu[i].note[1]);
       printf("\tinfo:");scanf("%f",&individu[i].note[2]);

    }
    affiche(individu,n);
    tri_nom(individu,n);
    affiche(individu,n);

}
void tri_nom(eleve tab[],int n)
{
  int i,ok=1;
  eleve aux1[100];
  while(ok==1)
  {
    ok=0;
     for(i=0;i<n;i++)
     {

       if(strcmp(tab[i].nom+i,tab[i+1].nom+i)>0)
       {
         aux1=tab[i];
         tab[i]=tab[i+1];
         tab[i+1]=aux1;
         ok=1;
       }
     }
       }
}

1 réponse

  1. Contributeur
    Bonjour,

    char nom[ligne][colone];
    Pourquoi un tableau à deux dimensions ? Une seule suffit pour une chaîne de caractères.

    scanf("%s",&individu[i].nom);
    Pas de & devant le pointeur.

    if(strcmp(tab[i].nom+i,tab[i+1].nom+i)>0)
    Que veux tu faire avec "+i" ?

    Merci d'utiliser la balise "code c" pour la prochaine fois.
    Exemple :
    <code c>ici tu mets ton code</code>
    1. ça ne marche pas lorsque j'enlève le "&"
    2. le tableau à deux dimensions me permet de saisir et de trier facilement
    3. le tableau à deux dimensions me permet de saisir et de trier facilement
    4. Contributeur
      Normal que ça ne marche pas puisque la variable "nom" n'est pas une chaîne de caractère mais un tableau à deux dimensions...
      Je ne suis pas convaincu par ton explication de saisir et de trier.
      Tu crées une structure Eleve qui a un nom. Un élève a un seul nom, pas plusieurs.
      Donc, je mettrais plutôt : char nom[TAILLE]; avec #define TAILLE 250
      Et là, il faut enlever le &.

      Si tu veux un tableau qui contient tous les noms, créé une autre variable mais pas dans la structure.
    5. @fiddyje l'ai fait mais dans ma fonction tri_nom ma boucle tourne qu'une seule fois