Bentouate
Messages postés12Date d'inscriptionmercredi 16 septembre 2009StatutMembreDernière intervention16 avril 2011
-
2 avril 2011 à 22:52
Bentouate
Messages postés12Date d'inscriptionmercredi 16 septembre 2009StatutMembreDernière intervention16 avril 2011
-
9 avril 2011 à 12:39
Bonjour,
J’espère que je me suis pas trompé de section :s je savais pas trop ou poster... voila mon problème:
je n'arrive pas à effectuer un trie sur une structure de donnée sous forme de liste.
Voici mon code:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections;
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(liVoiture, liMarque);
break;
case 2: edition_voit(liVoiture, liMarque);
break;
case 3: trier(ref liVoiture);
break;
}
}
}
static public void menu()
{
Console.Clear();
Console.WriteLine("Menu");
Console.WriteLine(" 1 remplir les tableaux (voitures et constructeurs)");
Console.WriteLine(" 2 editer les tableaux");
Console.WriteLine(" 3 tri sur numero des voitures");
Console.WriteLine(" 4 supprimer une voiture");
Console.WriteLine(" 5 ajouter une voiture");
Console.WriteLine(" 6 Recherche une voiture sur son numero");
}
public static void remplir_voit(List<voiture> liv, List<string> lim)
{
voiture sais_voit;
sais_voit.numero "1258XD76"; sais_voit.annee 1995;
sais_voit.marque 1; sais_voit.modele "Saxo"; sais_voit.prix = 3900;
liv.Add(sais_voit);
sais_voit.numero "1158ZE76"; sais_voit.annee 2002;
sais_voit.marque 1; sais_voit.modele "Saxo"; sais_voit.prix = 6800;
liv.Add(sais_voit);
sais_voit.numero "2584DR27"; sais_voit.annee 1999;
sais_voit.marque 0; sais_voit.modele "106"; sais_voit.prix = 5000;
liv.Add(sais_voit);
sais_voit.numero "1321XV76"; sais_voit.annee 2002;
sais_voit.marque 0; sais_voit.modele "206SW"; sais_voit.prix = 16000;
liv.Add(sais_voit);
sais_voit.numero "5673DQ27"; sais_voit.annee 1994;
sais_voit.marque 2; sais_voit.modele "Twingo"; sais_voit.prix = 4500;
liv.Add(sais_voit);
sais_voit.numero "8901TR76"; sais_voit.annee 2003;
sais_voit.marque 2; sais_voit.modele "Megane"; sais_voit.prix = 17000;
liv.Add(sais_voit);
sais_voit.numero "3456YT27"; sais_voit.annee 1999;
sais_voit.marque 0; sais_voit.modele "206"; sais_voit.prix = 9000;
liv.Add(sais_voit);
sais_voit.numero "1563HU76"; sais_voit.annee 1994;
sais_voit.marque 3; sais_voit.modele "Panda"; sais_voit.prix = 3500;
liv.Add(sais_voit);
lim.Add("Peugeot"); lim.Add("Citroen"); lim.Add("Renault"); lim.Add("Fiat");
lim.Add("Opel"); lim.Add("Toyota");
}
public static void edition_voit(List<voiture> liv, List<string> lim)
{
Console.WriteLine("Numero année Marque modele prix ");
foreach (voiture v in liv)
{
Console.WriteLine(v.numero + " " + v.annee + " " + lim[v.marque] + " " + v.modele + " " + v.prix);
}
Console.ReadKey();
}
public static void trier(ref List<voiture> liv)
{
liv.Sort(); // c'est ici que sa cloche !
}
}
}
A chaque fois j'ai "Impossible de comparer deux éléments dans le tableau." J'ai commenté l'endroit ou ça plante(sur la procédure trier).
ed73
Messages postés276Date d'inscriptionlundi 8 septembre 2008StatutMembreDernière intervention15 avril 20132 4 avril 2011 à 11:14
Bonjour
Il faut indiquer à la fonction Sort() sur quoi doit porter le tri. Pour cela, utilise un objet IComparer, un delegate ou encore une expression lambda, ou bien déclare ton objet voiture en utilisant l'interface IComparable et implémente la méthode CompareTo(object obj)