tri des membres du tableau de structure
Donné une structure de tableau (en C) je cherche à imprimer les résultats dans les groupes de sexe et dans l'ordre par ordre numérique. Par exemple:
struct employee{
char gender[13]
char name[13];
int id;
};
Dire que je définissent la structure de la matrice de la sorte:
struct employee info[2]={{"male","Matt",1234},{"female","Jessica",2345},{"male","Josh",1235}};
Comment pourrais-je aller sur l'impression des résultats, comme
1234 Matt
1235 Josh
2345 Jessica
source d'informationauteur bardockyo
Vous devez vous connecter pour publier un commentaire.
Vous aurez besoin de mettre en œuvre une fonction de tri qui compare les structures que vous avez besoin de
Et ensuite utiliser qsort de la bibliothèque standard.
À l'intérieur de la fonction de comparaison vous pouvez vérifier l'id étant égales par ailleurs, alors vous pouvez trier les résultats par nom (également à l'aide de
strcmp()
) mais vous l'aimez.Ken
Edit: Juste compilé et fixe. Voici un petit programme de test
Avec sortie:
Utiliser votre favori algorithme de tri sur la structure de la matrice. Lorsque l'on compare les deux éléments de la matrice de décider qui est "plus grand", de comparer leurs sexes; si les deux sexes sont identiques, la comparaison de leurs numéros. (Vous pouvez définir une fonction distincte pour faire cette comparaison, pour rendre les choses plus claires.) Ensuite, imprimez le tableau trié dans l'ordre en utilisant la mise en forme souhaitée. Garder une trace de quand le sexe commutateurs de mâle à femelle de sorte que vous pouvez mettre dans un supplément de trois retours à la ligne, comme dans votre exemple.
Edit: pour emprunter sans vergogne de kallikak, vous pouvez simplement transmettre votre comparaison de la fonction qsort, mais il renvoie 1 si une structure est "plus grand", -1 si elle est "moins" et (si nécessaire) 0 si c'est la même (à l'aide de la procédure que j'ai décrite ci-dessus). Jetez un oeil à Comment écrire une fonction de comparaison pour qsort de stdlib? pour obtenir de l'aide sur l'écriture d'une fonction de comparaison personnalisée.
Pense que c'est plus facile à comprendre,comme je suis faible en pointeur ,j'espère que ça aide............