Accueil > Forum > > > > trier tableau de struture
trier tableau de struture
samedi 7 octobre 2006 à 16:05:55 |
trier tableau de struture

henrydessss
|
bonjour, mon probleme : j'ai une structure comme ceci : struct repertoire{ char *nom; char *prenom; }; typedef struct repertoire Repertoire; Repertoire contact[3]; puis : strcpy(contact[0].nom,"bab"); strcpy(contact[1].nom,"baac"); strcpy(contact[2].nom,"abc"); peut importe le contenu des prenoms. comment afficher chaque contact, par ordre alphabetique sur les noms? j'y ai passé beaucoup de temps sans pouvoir y arriver. pouvez vous m'aider ? Bien à vous, jb on m'a dit : strcmp et qsort. mais je ne m'en sors pas, malgré que je connaisse 3 algo de tri : selection, insertion et a bulle.
|
|
samedi 7 octobre 2006 à 16:50:10 |
Re : trier tableau de struture

luhtor
|
Faut pas s'embeter avec des théories de tri à la "é'(ù*.
Tu fais une fonction qui te retourne le plus petit des deux objets que tu envois en argument.
Trier un tableau de structure ou un tableau d'entier, c'est pareil. Juste la fonction "<" qui change.
|
|
samedi 7 octobre 2006 à 16:52:22 |
Re : trier tableau de struture

henrydessss
|
reponse convenable mais : si dans une fonction, je change par exemple contact[3].nom et contact[1].nom, est ce que ca restera chang dans le retour à main? oui oui, je pourrais tester de moi meme, mais ma machine sous environement unix n'est pas à ma porté pour la journée.
|
|
samedi 7 octobre 2006 à 17:39:39 |
Re : trier tableau de struture

luhtor
|
Mais t'as juste besoin d'une fonction genre:
bool IsInferior(const repertoire & _obj1, const repertoire & _obj2);
et apres dans ta fonction, t'as juste a tester
if (! IsInferior(contact[1], contact[0]))
{
tmp = contact[0];
contact[0] = contact[1];
contact[1] = tmp;
}
|
|
samedi 7 octobre 2006 à 18:03:51 |
Re : trier tableau de struture

henrydessss
|
tu sais, je suis debutant... je comprends pas ceci : repertoire &_obj1 (aindi que le suivant). de plus, peut comparer contact[0] et contact[1] qui sont deux "structures" ? aussi, tmp=contact[0] n'a aucun sens. tmp=contact[0].nom en aurait, mais je devrais en faire autant pour le sprenom, email, adresse, etc... sachant que parfois, hors mis le nom, un champ peut etre vide.
en gros, imaginons, j'ai ceci :
Monsieur Y emaily MonsieurX prenomx emailx telephonex
j'aimerais au final avoir
MonsieurX prenomx emailx telephonex Monsieur Y emaily
soit contact[1].nom=MonsieurY contact[1].email=emaily etc...
|
|
samedi 7 octobre 2006 à 18:52:10 |
Re : trier tableau de struture

luhtor
|
repertoire tmp = contact[0]; <= pk ca n'a aucun sens. Bien sur que si, ca copie l'objet dans un autre.
Voici le contenu de la fonction IsInferior:
bool IsInferior(const repertoire & _obj1, const repertoire & _obj2)
{
int resultat = strcmp(_obj1.nom, _obj2.nom);
if (resultat < 0) return true;
else if (resultat == 0)
{
if (strcmp(_obj1.prenom, _obj2.prenom) < 0) return true;
else return false;
}
else return false;
}
Cad, si A et B sont deux objets répertoire. A est plus petit que B si
A.nom est plus petit que B.nom (ordre alphabétique) ou si A.nom et
B.nom sont égales, alors A et plus petit que B si A.prenom est
inférieur à B.prenom.
|
|
samedi 7 octobre 2006 à 18:54:59 |
Re : trier tableau de struture

luhtor
|
j'ai oublié de précisé, si tu programmes en C, il faut la déclaration suivante:
bool IsInferior(const repertoire _obj1, const repertoire _obj2)
et non
bool IsInferior(const repertoire & _obj1, const repertoire & _obj2)
|
|
dimanche 8 octobre 2006 à 13:27:49 |
Re : trier tableau de struture

henrydessss
|
hum.
bon, j'ai pas bool.h peu importe, j'ai modifié votre code pour retourner un entier.
mais gcc me dit cela :
repertoire.c: Dans la fonction « IsInferior »:
repertoire.c:17: error: `_obj1' undeclared (first use in this function)
de meme pour _obj2
j'ai bien pris soin de mettre cette fonction en tete de mon code. il me
dit ca alors meme que je ne fais pas appel ) cette fonction. je n'ai
fais que la mettre dans le code.
j'aurais aimé chercher à resoudre ce probleme moi meme, mais je ne
connais pas DU TOUT ce genre de chose. j'ignorais la notation
"_quelquechose" et le reste, comme passer contact[i] en paramettre...
|
|
dimanche 8 octobre 2006 à 14:52:54 |
Re : trier tableau de struture

luhtor
|
Mais tu penses mal :) il faut penser en terme de "type" et "object". Tu
peux envoyer n'importe quel objet en argument, ya pas de limitation. Le
fait d'utiliser un tableau, ca change strictement rien.
contact[i] c'est un objet de type REPERTOIRE.
repartoire test;
test et contact[i] c'est exactement le meme type d'objet, aucune différence.
Ton probleme vient surement du fait que lorsque tu déclares la fonoction IsInferior, le type "repertoire" n'est pas définie.
Donc le plus simple est que tu déclares la structure avant la fonction.
|
|
dimanche 8 octobre 2006 à 15:02:55 |
Re : trier tableau de struture

henrydessss
|
merci pour ces precisions sur le langage en question.
pour ce qui est de la solution, oui, j'avais pensé comme toi, mais un peu trop tard (une fois parti de chez moi).
je rectifierai le tir des que je serai sur ma machine, mais je pense que ca vient de là, oui.
merci encore. je viendrai ici pour signifier que le probleme est resolu si toute fois ce sera le cas:)
|
|
Cette discussion est classée dans : tableau, repertoire, trier, contact, strcpy
Répondre à ce message
Sujets en rapport avec ce message
Trier les valeur d'un tableau [ par pirate75000 ]
Bonjour,Je remplis un tableau avec de valeur numerique que je voudrais reclasser par ordre croissantSachant que je peux avoir deux valeur identiquele
URGENT Trier Tableau de chaine de caractère ds l'ordre alphabétique [ par rico77200 ]
J'ai encore besoin de votre aide!!!C'est très facile diront certain, mais je bloque!!Il me faut trier un tabeau de chaines de caractères dans l'ordre
Trier un tableau de struct selon un ordre précis [ par Dark Revan ]
Voici mon problème : struct Individu { public long m_san; public string m_moi; } Je dois trier un tableau de "Individu" en ordre croissant d
trier un tableau par ordre alphabetique [ par sirvincent ]
bonjour, je programme sous borland c++ builder v5donc voila j'ai un objet stringGringet quand je clic sur un bouton je souhaite qu'une colone se trie
trier et classer un tableau de structures [ par requinB ]
bonjour;mes amis, je bloque...sur comment trier et classer un tableau de structures...le tableau comprend un estructure article: code en int, libelle
Trier un tableau de manière aléatoire [ par nisaloncaje ]
Bonjour, je suis débutant en c et j'aimerais savoir comment est-il possible de trier un tableau de manière aléatoire ? je m'explique :j'ai un tableau
Tableaux en C [ par Zworykin ]
Bonjours à tous, voila j'ai ce bout de code qui permets de trier un tableau mais je ne comprends pas trop son fonctionnement. int t[dim] = { 6,7,8,
Trier un tableau [ par enoitnaillal ]
Bonjour, Comment trier les éléments d’un tableau d’entier, dans l’ordre croissant ?
tableau modifié [ par youssefmahdia ]
bonjour, j'ai rencontré un problème lors de la modification d'un tableau. en effet, mon premier tableau nommé T contient 3000 éléments. je veux créer
Tri décroissant de tableau [ par enoitnaillal ]
Bonjour, J’ai trouvé une variante de sort() : std ::sort (tb.begin(), tb.end(), std ::greater ()); permettant du faire un tri décroissant, (je travail
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|