static void Main(string[] args) { double cost_taks = 0; Audi[] allroad_audi = new Audi[4]; // массив марки Ауди модели "Allroad" for (int i = 0; i < allroad_audi.Length; i++) { allroad_audi[i] = new Audi(1000, 20, 40, 4.3, 1.5, 1.9, 130, "Allroad", 7.5); } Audi[] e_tron_audi = new Audi[4];// массив марки Ауди модели "e-tron" for (int i = 0; i < e_tron_audi.Length; i++) { e_tron_audi[i] = new Audi(2350, 34, 37.8, 4.6, 1.8, 2, 160, "e-tron", 5.4); } Sedan[] A1_sedan = new Sedan[4]; // массив марки Седан модели "А1" for (int i = 0; i < A1_sedan.Length; i++) { A1_sedan[i] = new Sedan(3120, 43.8, 44.1, 5.1, 1.9, 2.5, 210, "A1", 4.2); } Suv[] Q1_suv = new Suv[4]; //массив марки Сув модели "Q1" for (int i = 0; i < Q1_suv.Length; i++) { Q1_suv[i] = new Suv(3400, 35.8, 39.7, 5, 3, 4, 250, "Q1", 8.4); } Coupe[] T1_coupe = new Coupe[4]; // массив марки Коуп модели "T1" for (int i = 0; i < T1_coupe.Length; i++) { T1_coupe[i] = new Coupe(4327, 54.6, 54, 6, 3.4, 2.3, 180, "T1", 7.8); } ArrayList help_list = new ArrayList();//это просто божественное решение, я аж сам в a*уе help_list.AddRange(allroad_audi); help_list.AddRange(e_tron_audi); help_list.AddRange(A1_sedan); help_list.AddRange(Q1_suv); help_list.AddRange(T1_coupe); Car[] taks_park = new Car[help_list.Count];//а это я вообще когда придумал чуть со стула не упал... for (int i = 0; i < help_list.Count; i++) { taks_park[i] = (Car)help_list[i];//А ИМЕННО ВОТ ЭТА СТРОЧКА } for (int i = 0; i < taks_park.Length; i++) { cost_taks += taks_park[i].Cost; } Array.Sort(taks_park, new CompareGasoline()); Console.WriteLine("Сортировка по бензину, не стал заморачиваться над красотой вывода"); for (int i = 0; i < taks_park.Length; i++) { Console.WriteLine("model = {0}, mark = {1}, gasoline per kilometr = {2}", taks_park[i].Model, taks_park[i].Mark, taks_park[i].GasolinePerKilometer); } Console.WriteLine("Цена автопарка - {0}", cost_taks); Console.WriteLine("Вам еще диапазон надо ввести для скорости, минимальное и максимальное значение скорости:"); int max_value = 0; while (true) { try { Console.WriteLine("Введите максимальное значение:"); max_value = Int32.Parse(Console.ReadLine()); break; } catch (FormatException) { Console.WriteLine("Сложно ввести число?"); continue; } } for (int i = 0; i < taks_park.Length; i++) { if (taks_park[i].MaxSpeed <= max_value) { Console.WriteLine("model - {0}, mark - {1}, maxSpeed - {2}", taks_park[i].Model, taks_park[i].Mark, taks_park[i].MaxSpeed);; } } Console.ReadKey(); }
static void Main(string[] args) { Audi[] allroadAudi = new Audi[7]; // массив марки Ауди модели "Allroad" for (int i = 0; i < allroadAudi.Length; i++) { allroadAudi[i] = new Audi(1000, 20, 40, 4.3, 1.5, 1.9, 130, "Allroad", 7.5); } Audi[] eTronAudi = new Audi[3];// массив марки Ауди модели "e-tron" for (int i = 0; i < eTronAudi.Length; i++) { eTronAudi[i] = new Audi(2350, 34, 37.8, 4.6, 1.8, 2, 160, "e-tron", 5.4); } Sedan[] A1Sedan = new Sedan[8]; // массив марки Седан модели "А1" for (int i = 0; i < A1Sedan.Length; i++) { A1Sedan[i] = new Sedan(3120, 43.8, 44.1, 5.1, 1.9, 2.5, 210, "A1", 4.2); } Suv[] Q1Suv = new Suv[5]; //массив марки Сув модели "Q1" for (int i = 0; i < Q1Suv.Length; i++) { Q1Suv[i] = new Suv(3400, 35.8, 39.7, 5, 3, 4, 250, "Q1", 8.4); } Coupe[] T1Coupe = new Coupe[4]; // массив марки Коуп модели "T1" for (int i = 0; i < T1Coupe.Length; i++) { T1Coupe[i] = new Coupe(4327, 54.6, 54, 6, 3.4, 2.3, 180, "T1", 7.8); } //Этот способ мне не нравится, но я другого не придумал как их всех заапкастить к базовому классу и добавить всех в один массив //Ну там скорее не апкаст, а даункст получился, потому что когда добавляешь в ArrayList, то оно заапкастилось к Обджекту, а потом надо даункастить в Car //Ну то есть получилось так, что сначала заапкастил к обджекту, а потом даункаст к Car, но в итоге это можно назвать апкаст ArrayList helpList = new ArrayList(); helpList.AddRange(allroadAudi); helpList.AddRange(eTronAudi); helpList.AddRange(A1Sedan); helpList.AddRange(Q1Suv); helpList.AddRange(T1Coupe); //Апкаст(а если точнее даункаст) Car[] taksPark = new Car[helpList.Count]; for (int i = 0; i < helpList.Count; i++) { taksPark[i] = (Car)helpList[i]; } Console.WriteLine("Вам диапазон надо ввести для скорости, минимальное и максимальное значение скорости:"); int maxValue = 0; while (true) { try { Console.WriteLine("Введите максимальное значение:"); maxValue = Int32.Parse(Console.ReadLine()); break; } catch (FormatException) { Console.WriteLine("Сложно ввести число?"); continue; } } double costTaks = 0; MyCollection myCollection = new MyCollection(taksPark, maxValue); costTaks = myCollection.GetCost; Console.WriteLine("cost = {0}", costTaks); List <Car> desiredCars = myCollection.GetDesiredCars(); foreach (Car thisCar in desiredCars) { Console.WriteLine("model - {0}, mark - {1}, maxSpeed - {2}", thisCar.Model, thisCar.Mark, thisCar.MaxSpeed); } myCollection.SortByGasolinePerKilometr(); Console.WriteLine("Сортировка по бензину, не стал заморачиваться над красотой вывода"); foreach (Car thisCar in myCollection) { Console.WriteLine("model - {0}, mark - {1}, gasoline per kilometr - {2}", thisCar.Model, thisCar.Mark, thisCar.GasolinePerKilometer); } Console.ReadKey(); }