public static void Main(string[] args) { List <Tire[]> tiresList = new List <Tire[]>(); string inputTire; while ((inputTire = Console.ReadLine()) != "No more tires") { string[] info = inputTire.Split(" ", StringSplitOptions.RemoveEmptyEntries).ToArray(); Tire[] tire = new Tire[4]; for (int i = 0; i < tire.Length; i++) { int year = int.Parse(info[i * 2]); double pressure = double.Parse(info[i * 2 + 1]); Tire oneTire = new Tire(year, pressure); tire[i] = oneTire; } tiresList.Add(tire); } List <Engine> engineList = new List <Engine>(); string inputEngine; while ((inputEngine = Console.ReadLine()) != "Engines done") { string[] info = inputEngine.Split(" ", StringSplitOptions.RemoveEmptyEntries).ToArray(); Engine engine = new Engine(int.Parse(info[0]), double.Parse(info[1])); engineList.Add(engine); } List <Car> carList = new List <Car>(); string carInfo; while ((carInfo = Console.ReadLine()) != "Show special") { string[] info = carInfo.Split(" ", StringSplitOptions.RemoveEmptyEntries).ToArray(); string make = info[0]; string model = info[1]; int year = int.Parse(info[2]); double fuelQuantity = double.Parse(info[3]); double fuelConsumtion = double.Parse(info[4]); Engine engine = engineList[int.Parse(info[5])]; Tire[] tires = tiresList[int.Parse(info[6])]; Car car = new Car( make, model, year, fuelQuantity, fuelConsumtion, engine, tires); carList.Add(car); } foreach (var car in carList) { Predicate <Car> yearPredicate = car => car.Year >= 2017; Predicate <Car> powerPredicate = car => car.Engine.HorsePower > 330; Predicate <Car> tiresPredicate = car => car.Tires.Sum(x => x.Pressure) >= 9 && car.Tires.Sum(x => x.Pressure) <= 10; if (yearPredicate(car) && powerPredicate(car) && tiresPredicate(car)) { var neededFuel = car.FuelConsumption * 20 / 100; car.FuelQuantity -= neededFuel; car.GetSpecification(); } } }