Tri nom

Fermé
sambio Messages postés 6 Date d'inscription samedi 7 mars 2015 Statut Membre Dernière intervention 9 mars 2015 - Modifié par KX le 7/03/2015 à 22:35
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 9 mars 2015 à 20:49
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

fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
7 mars 2015 à 22:29
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>
0
sambio Messages postés 6 Date d'inscription samedi 7 mars 2015 Statut Membre Dernière intervention 9 mars 2015
8 mars 2015 à 21:38
ça ne marche pas lorsque j'enlève le "&"
0
sambio Messages postés 6 Date d'inscription samedi 7 mars 2015 Statut Membre Dernière intervention 9 mars 2015
8 mars 2015 à 21:42
le tableau à deux dimensions me permet de saisir et de trier facilement
0
sambio Messages postés 6 Date d'inscription samedi 7 mars 2015 Statut Membre Dernière intervention 9 mars 2015
8 mars 2015 à 21:43
le tableau à deux dimensions me permet de saisir et de trier facilement

    
0
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 1 844
8 mars 2015 à 22:14
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.
0
sambio Messages postés 6 Date d'inscription samedi 7 mars 2015 Statut Membre Dernière intervention 9 mars 2015 > fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022
8 mars 2015 à 23:24
je l'ai fait mais dans ma fonction tri_nom ma boucle tourne qu'une seule fois
0