//Абстрактный: abstract class Transport : IComparable { protected string stamp;//марка protected int num;//номер protected int speed;//скорость public float carry;//грузоподъёмность public abstract void Show(); public abstract void Carrying(); public int CompareTo(Transport obj) { if (this.carry > obj.carry) return 1; if (this.carry < obj.carry) return -1; else return 0; } } //Легковая машина: class Passenger_car : Transport { public Passenger_car(string stamp,int num,int speed,float carry) { this.stamp = stamp; this.num = num; this.speed = speed; this.carry = carry; } public override void Show() { Console.WriteLine("Марка-{0}\tНомер-{1}\tСкорость-{2}\tГрузоподъёмность-{3}", stamp, num, speed, carry); } public override void Carrying() { Console.WriteLine("Грузоподъёмность = {0}",carry); } } //Мотоцикл: class Motorcycle : Passenger_car { public bool lulka; public Motorcycle(string stamp, int num, int speed, float carry,bool lulka):base(stamp,num,speed,carry) { this.lulka = lulka; if (this.lulka == false) { base.carry = 0; } } public override void Show() { Console.WriteLine("Марка-{0}\tНомер-{1}\tСкорость-{2}\tГрузоподъёмность-{3}\tЕсть люлька?->{4}", stamp, num, speed, carry, lulka); } public override void Carrying() { Console.WriteLine("Грузоподъёмность = {0}", carry); } } //Грузовик: class Truck : Passenger_car { protected bool trailer; public Truck(string stamp, int num, int speed, float carry,bool trailer):base(stamp, num, speed, carry) { this.trailer = trailer; if (this.trailer == true) { base.carry = carry * 2; } } public override void Show() { Console.WriteLine("Марка-{0}\tНомер-{1}\tСкорость-{2}\tГрузоподъёмность-{3}\tЕсть прицеп?->{4}", stamp, num, speed, carry, trailer); } public override void Carrying() { Console.WriteLine("Грузоподъёмность = {0}", carry); } } //Главный класс: class Program { static void Main() { string[] allLines = File.ReadAllLines("Input.txt"); List n = new List(); string line = allLines[0]; string[] fields = line.Split(' '); n.Add(new Motorcycle(fields[0], Convert.ToInt32(fields[1]), Convert.ToInt32(fields[2]), Convert.ToInt32(fields[3]),Convert.ToBoolean(fields[4]))); line = allLines[1]; fields = line.Split(' '); n.Add(new Truck(fields[0], Convert.ToInt32(fields[1]), Convert.ToInt32(fields[2]), Convert.ToInt32(fields[3]), Convert.ToBoolean(fields[4]))); line = allLines[2]; fields = line.Split(' '); n.Add(new Passenger_car(fields[0], Convert.ToInt32(fields[1]), Convert.ToInt32(fields[2]), Convert.ToInt32(fields[3]))); n.Sort(); foreach (Transport item in n) { item.Show(); item.Carrying(); Console.WriteLine(); } } } /* "Kawasaki" 555 60 100 true/false "Kamaz" 666 40 1000 true/false "BMW" 777 100 500 */