- Compare() mehtod, Parent and Children objects sorting not perfect
- class DrinkComparer : IComparer<Drink>
- {
- public int Compare(Drink x, Drink y)
- {
- // AlcoholDrink class is children of Drink class
- if (x is AlcoholDrink && y is AlcoholDrink)
- {
- AlcoholDrink a = (AlcoholDrink)x;
- AlcoholDrink b = (AlcoholDrink)y;
- double aAlk = a.GetValueOfAlcohol;
- double bAlk = b.GetValueOfAlcohol;
- if (aAlk > bAlk)
- return -1;
- else if (aAlk < bAlk)
- return 1;
- else
- return 0;
- }
- // Drink objects haven't got GetValueOfAlcohol method...
- // How can I aim, the non AlcoholDrink objects (Drink objects) go to the end array?
- else
- return 1;
- }
- }
- static AlcoholDrink[] Largest3AlcoholDrink(Drink[] t)
- {
- Array.Sort(t, new DrinkComparer());
- AlcoholDrink[] sz = new AlcoholDrink[3];
- sz[0] = (AlcoholDrink)t[0];
- sz[1] = (AlcoholDrink)t[1];
- sz[2] = (AlcoholDrink)t[2];
- return sz;
- }
- AlcoholDrink sz = new AlcoholDrink( "Kékfrankos" , "0.75 l", 1500, 4.5);
- Console.WriteLine(sz);
- Drink[] t = new Drink[8];
- t[0] = new AlcoholDrink("Kék Portói", "0.75 l", 1200, 20.5);
- t[1] = new Drink("Tocsik", "0.75 l", 1100); // Non Alcohol Drink
- t[2] = new AlcoholDrink("Tokaji Asszú", "0.75 l ", 1600, 14.5);
- t[3] = new AlcoholDrink("Egri Bikavér", "0.75 l", 1500, 23.5);
- t[4] = new Drink("Egri Szamóca", "0.75 l", 1100); // Non Alchol Drink
- t[5] = new AlcoholDrink("Egri Merlot", "0.75 l", 1700, 18.5);
- t[6] = new AlcoholDrink("Egri Medina", "0.75 l", 900, 16.5);
- t[7] = new AlcoholDrink("Törley Talisman", "0.75 l", 750, 4.5);
- Console.WriteLine(DrinkKeres( t, "Egri Bikavér"));
- Largest3AlcoholDrink(t);
- Console.ReadLine();
- // Drink objects haven't got GetValueOfAlcohol method...
- // How can I aim, the non AlcoholDrink objects (Drink objects) go to the end array?
- else
- return 1;
- else if (x is AlcoholicDrink) return -1;
- else if (y is AlcoholicDrink) return 1;
- else return 0;
- public AlcoholDrink[] GetAlcoholicDrinks(Drink[] drinks) {
- ArrayList alcoholDrinks = new ArrayList();
- foreach (Drink drink in drinks) {
- if (drink is AlcoholDrink) {
- alcoholDrinks.Add(drink);
- }
- }
- return alcoholDrinks.ToArray(typeof(AlcoholDrink)) as AlcoholDrink[];
- }