IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

Besoin d'idée pour le tri d'une liste de client


Sujet :

C++

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2011
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2011
    Messages : 79
    Points : 45
    Points
    45
    Par défaut Besoin d'idée pour le tri d'une liste de client
    Bonsoir, mon problème est que j'ai une liste ( pas de la library liste.h ) de client ( une class client ) et je dois performer des tri croissant ou décroissant selon l'id du client ou son nombre d'achat.

    Voici ma fonction de tri de ma classe liste
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    	void Trier(string option)
    	{
    		if (_compte > 1)
    		{
    			NoeudPtr pivot = _tete;
    			NoeudPtr courant;
    			NoeudPtr reserve;
    			while (pivot->suivant != _tete)
    			{
    				courant = pivot->suivant;
    				reserve = pivot;
    				while (courant != _tete)
    				{
    					if(option == "croissant")
    					{
    						if (*reserve->objetPtr > *courant->objetPtr)
    							reserve = courant;
    					}
    					if(option == "desc")
    					{
    						if (*reserve->objetPtr < *courant->objetPtr)
    							reserve = courant;
    					}
    					courant = courant->suivant;
    				}
    				if (reserve!=pivot)
    				{
    					Objet* objetPtr = reserve->objetPtr;
    					reserve->objetPtr = pivot->objetPtr;
    					pivot->objetPtr = objetPtr;
    				}
    				pivot = pivot->suivant;
    			}
    		}
    	}
    ma fonction tri marche très bien pour l'id du client mais je ne peux pas le faire pour le total d'achat car dans ma class client les opérateurs '<' et '>' son déja surchargé pour retourné le plus grand/petit id du client.

    Je ne sais pas si vous comprenez se que je veux dire ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	friend bool operator>(const Clients& client1,const Clients& client2)
    	{
    		return ( client1.GetIdClient() > client2.GetIdClient() );
    	}
     
    	friend bool operator<(const Clients& client1, const Clients& client2)
    	{
    		return ( client1.GetIdClient() < client2.GetIdClient() );
    	}

  2. #2
    Membre éprouvé
    Homme Profil pro
    R&D imagerie 3D / prog embarquée
    Inscrit en
    Mars 2007
    Messages
    417
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : R&D imagerie 3D / prog embarquée
    Secteur : Santé

    Informations forums :
    Inscription : Mars 2007
    Messages : 417
    Points : 1 247
    Points
    1 247
    Par défaut
    Salut,

    Personnellement, je commencerais pas écrire un forward iterator pour Noeud (j'assume que Noeud est une liste simplement chaînée).
    Ensuite, je modifierais Trier pour la rendre générique:
    template<class ForwardIterator, class Compare>
    void Trier(ForwardIterator first, ForwardIterator last, Compare comp);
    C'est la même signature que std::sort, mis à part que ta fonction accepte les forward iterator.
    Il maintenant mettre à jour ton implémentation pour qu'elle utilise l'itérateur plutôt que suivant et le foncteur comp pour faire les comparaisons.
    Il ne te reste qu'à écrire 2 foncteurs pour tes comparaisons par id et par nombre d'achat.

    Une solution plus rapide à implémenter serait d'écrire seulement les 2 foncteurs et de passer l'un ou l'autre en paramètre de Trier. Mais c'est dommage de ne pas pouvoir réutiliser cette fonction de trie pour éviter l'implémentation d'une simple itérateur.

    A+

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/04/2009, 21h47
  2. Besoin d'idée pour une requête
    Par Cyriusix dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 09/05/2008, 15h35
  3. aide pour le tri d'une liste
    Par dany9 dans le forum C
    Réponses: 13
    Dernier message: 01/03/2007, 10h52
  4. Besoin da'ide pour le Déploiment d'une Application VB6 sur un Serveur d'application
    Par blowlagoon dans le forum Installation, Déploiement et Sécurité
    Réponses: 4
    Dernier message: 02/08/2006, 23h24

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo