begin process at 2012 05 30 19:08:20
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C

 > 

Divers

 > 

Divers

 > 

trier tableau de struture


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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:)



1 2

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


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,374 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales