Methode de Tri par ordre alphabétique [Résolu]

Methode de Tri par ordre alphabétique [Résolu] - C#/.NET managed - Programmation

Marsh Posté le 27-10-2010 à 10:59:08    

Bonjour, bonjour.
 
Tout d'abords je suis nouveau ici (comme dans le métier, donc pardonnez moi si je ne comprends pas tout directement), et je sais pas bien comment ça marche, je m'excuse si un sujet existe déjà, mais la recherche n'a pas l'air de vouloir fonctionner.
 
Donc comme indiquer dans le titre, je cherche une méthode de tri par ordre alphabétique. Mais une méthode hein, pas un truck tout fais, aucun intérêt pour mes études sinon ^^.
 
Voilà le topo:  
Le but de mon programme est de crée une interface pour entrer des humains voulant prendre l'avion (c'est un exercice). J'ai donc déjà crée la méthode toussa, je peux entrer donc le nom, le prénom, l'age, le numéro de téléphone. Et j'aimerais que pendant la restitution de données, il me tri les personnes par ordre alphabétique.
 

Spoiler :


namespace Personne
{
    class Program
    {
        /// <summary>
        /// Constructeur Classe Personne
        /// </summary>
        /// <param name="args"></param>
        static void Main(string[] args)
        {
            int g = 0;
            string s1, s2;//Initialise s1
            Personne personne;
            Console.WriteLine("Souhaitez vous faire une saisie de donnees?" );
            s1 = Console.ReadLine();//récupère s1
 
            List<Personne> Personnes = new List<Personne>(); //Création de la liste Avion
            if (s1 == "non" ) Console.WriteLine("D'accord" );//Arret
            else if (s1 == "oui" ) do // Boucle
                {
                    personne = new Personne();
                    Console.WriteLine("Entrer le Nom : " );
                    personne.Nom = Console.ReadLine();
 
                    Console.WriteLine("Entrer le Prenom : " );
                    personne.Prenom = Console.ReadLine();
 
                    Console.WriteLine("Entrer l'age : " );
                    personne.Age = Convert.ToInt32(Console.ReadLine());
 
                    Console.WriteLine("Entrer le numero de telephone : " );
                    personne.Telephone = Convert.ToInt32(Console.ReadLine());
 
                    Personnes.Add(personne); // Ajoute une personne à la liste
 
                    g++;
 
                    Console.WriteLine("Souhaitez-vous continuer votre saisie de donnée? : " );
 
                    s2 = Console.ReadLine();
                    if (s2 == "non" ) break;
                    else if (s2 == "oui" ) continue;
                }
                while (s1 == "oui" );
 
            {
                foreach (Personne u in Personnes)
                {
                    Afficheur(u);
                }
            }
        }
 
        /// <summary>
        /// Methode Afficheur
        /// </summary>
        /// <param name="args"></param>
        static void Afficheur(Personne args)
        {
                Console.WriteLine("Voici vos informations : " );
 
                Personne Personne = args;
 
                Console.WriteLine("Nom : " + Personne.Nom);
                Console.WriteLine("Prenom : " + Personne.Prenom);
                Console.WriteLine("Age : " + Personne.Age);
                Console.WriteLine("Telephone: " + Personne.Telephone);
 
                System.Console.ReadKey();
        }
    }
}


 
Voilà. Donc si quelqu'un sais me donner quelque chose mais pas intégrer, du moins pas directement, ou même des liens, je suis preneur.
 
Merci.


Message édité par askior le 08-11-2010 à 10:17:35
Reply

Marsh Posté le 27-10-2010 à 10:59:08   

Reply

Marsh Posté le 28-10-2010 à 16:21:26    

Tu dois utiliser ta propre fonction de comparaison, par exemple dans ta classe Personne:
 

Code :
  1. public static int CompareNomPersonne(Personne personne1, Personne personne2) {
  2.     return personne1.Nom.CompareTo(personne2.Nom);
  3. }


 
et avant d'afficher ta liste par le foreach, tu utilises ta fonction de tri:

Code :
  1. Personnes.Sort(Personne.CompareNomPersonne);

Reply

Marsh Posté le 08-11-2010 à 10:16:51    

C'est simple et efficace ta méthode jeff.  
Au final, ma fonction de tri se présente comme ça :

Code :
  1. Console.WriteLine("Liste triée par nom:" );
  2.                 Personnes.Sort(delegate(Personne p1, Personne p2) { return p1.nom.CompareTo(p2.nom); });
  3.                 Personnes.ForEach(delegate(Personne p) { Console.WriteLine(String.Format("{0} {1} {2} {3}",p.nom,p.prenom,p.age,p.telephone)); });


 
Encore merci ;)

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed