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 :

Probleme de tri


Sujet :

C#

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Avril 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Avril 2011
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Probleme de tri
    Bonjour !

    Je n'arrive pas à utiliser le "Sort" pour effectuer un trie sur une list.

    Un bout de code va être mieux pour comprendre mon problème je pense :p

    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    namespace ConsoleApplication1
    {
        public struct voiture
        {
            public string numero;
            public int annee;
            public int marque;
            public string modele;
            public double prix;
        }
     
        class Program
        {
            static void Main(string[] args)
            {
                int choix = 0;
                List<voiture> liVoiture = new List<voiture>();
                List<string> liMarque = new List<string>();
     
                while (choix != 10)
                {
                    menu();
                    Console.WriteLine("Entrer votre choix");
                    choix = Int32.Parse(Console.ReadLine());
                    switch (choix)
                    {
                        case 1: remplir_voit(ref liVoiture, ref liMarque);
                            break;
                        case 2: edition_voit(liVoiture, liMarque);
                            break;
                        case 3: trier(ref liVoiture);
                            break;
                        case 4: supprimer();
                            break;
                        case 5: ajouter();
                            break;
                        case 6: search(liVoiture);
                            break;
                    }
     
     
                }
            }
     
            public static void trier(ref List<voiture> liv)
            {
                liv.Sort();
            }
    A chaque fois j'ai le message suivant :
    Impossible de comparer deux éléments dans le tableau.
    Je pense que cela vient de la structure "voiture" ...

    Si vous avez une solution je suis preneur !

  2. #2
    Rédacteur
    Avatar de Nathanael Marchand
    Homme Profil pro
    Expert .Net So@t
    Inscrit en
    Octobre 2008
    Messages
    3 615
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Expert .Net So@t
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2008
    Messages : 3 615
    Points : 8 080
    Points
    8 080
    Par défaut
    Voici la réponse:
    http://msdn.microsoft.com/en-us/library/b0zbh7b6.aspx

    Lorsqu'on regarde cette méthode, on s'apercoit de plusieurs choses dans les remarques qui signifient toutes la même chose: comment on compare deux voitures? Qu'est ce qui fait que l'une est superieure à l'autre? Est ce l'année? Le prix? Bref, le framework ne peut pas le deviner. Pour cela, plusieurs solution:
    • The Comparer<T>.Default property checks whether type T implements the IComparable<T> generic interface and uses that implementation, if available
    • If not, Comparer<T>.Default checks whether type T implements the IComparable interface
    • If type T does not implement either interface, Comparer<T>.Default throws an InvalidOperationException
    Manifestement, c'est le dernier point que tu rencontres.
    Il faut donc que tu implémentes une des deux interfaces.
    Cependant, ca n'est pas forcément toujours une bonne idée car tu peux ne pas vouloir utiliser la meme comparaison (un coup comparer par prix, un coup par année)
    Tu peux donc te servir de ca:
    http://msdn.microsoft.com/en-us/library/w56d4y5z.aspx
    En précisant la méthode avec laquelle tu compares tes éléments

  3. #3
    Rédacteur
    Avatar de Yoshio
    Homme Profil pro
    Inscrit en
    Septembre 2005
    Messages
    1 732
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 732
    Points : 2 853
    Points
    2 853
    Par défaut
    Sur quel base la méthode Sort est-elle censée comparer 2 voitures? Marque? Modele? Numéro?

    Tu dois spécifier un Comparer.

    Par exemple pour tier par modèle:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liv.Sort((v1,v2) => String.Compare(v1.modele, v2.modele));

Discussions similaires

  1. Probleme de tri de chaine de caractere...
    Par GESCOM2000 dans le forum Access
    Réponses: 12
    Dernier message: 28/12/2005, 13h43
  2. [Math]Problème avec tri
    Par HNT dans le forum Général Java
    Réponses: 4
    Dernier message: 11/12/2005, 13h43
  3. Probleme de tri et de vérificatin d'éléments
    Par danje dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 08/08/2005, 09h05
  4. [langage] Probleme de tri d'un tableau de tableau
    Par Ludo167 dans le forum Langage
    Réponses: 1
    Dernier message: 25/08/2004, 10h32
  5. [LG]problème de tri de pointeur (bulles non optimisé)
    Par blackmage dans le forum Langage
    Réponses: 3
    Dernier message: 20/11/2003, 23h42

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