Ejemplo n.º 1
0
        public static void Main(string[] args)
        {
            List <Soldier> soldiers = new List <Soldier>();
            string         input    = string.Empty;

            while ((input = Console.ReadLine()) != "End")
            {
                string[] tokens      = input.Split();
                string   soldierType = tokens[0];
                Soldier  soldier;
                try
                {
                    soldier = SoldierFactory.GetSoldier(soldiers, soldierType, tokens);
                }
                catch (ArgumentException ex)
                {
                    continue;
                }
                soldiers.Add(soldier);
            }
            Console.WriteLine(string.Join($"{Environment.NewLine}", soldiers));
        }
Ejemplo n.º 2
0
        public static void Main()
        {
            List <ISoldier> army = new List <ISoldier>();

            string command;

            while ((command = Console.ReadLine()) != "End")
            {
                string[] tokens = command.Split(new char[] { }, StringSplitOptions.RemoveEmptyEntries);

                string soldier   = tokens[0];
                string id        = tokens[1];
                string firstName = tokens[2];
                string lastName  = tokens[3];

                switch (soldier)
                {
                case "Private":
                    double salary = double.Parse(tokens[4]);
                    army.Add(SoldierFactory.GetPrivate(id, firstName, lastName, salary));
                    break;

                case "LeutenantGeneral":
                    salary = double.Parse(tokens[4]);
                    IList <ISoldier> privates = ExtractPrivates(tokens.Skip(5).ToList(), army);
                    army.Add(SoldierFactory.GetLeutenantGeneral(id, firstName, lastName, salary, privates));
                    break;

                case "Engineer":
                    salary = double.Parse(tokens[4]);
                    string corps = tokens[5];
                    if (corps != "Airforces" && corps != "Marines")
                    {
                        break;
                    }
                    IList <IRepair> repairs = ExtractRepair(tokens.Skip(6).ToList(), army);
                    army.Add(SoldierFactory.GetEngineer(id, firstName, lastName, salary, corps, repairs));
                    break;

                case "Commando":
                    salary = double.Parse(tokens[4]);
                    corps  = tokens[5];
                    if (corps != "Airforces" && corps != "Marines")
                    {
                        break;
                    }
                    IList <IMission> missions = ExtractMission(tokens.Skip(6).ToList(), army);
                    army.Add(SoldierFactory.GetCommando(id, firstName, lastName, salary, corps, missions));
                    break;

                case "Spy":
                    int codeNumber = int.Parse(tokens[4]);
                    army.Add(SoldierFactory.GetSpy(id, firstName, lastName, codeNumber));
                    break;

                default:
                    break;
                }
            }

            foreach (var solder in army)
            {
                Console.WriteLine(solder);
            }
        }