Exemple #1
0
    public static void Main()
    {
        var input    = string.Empty;
        var privates = new List <Private>();

        while ((input = Console.ReadLine()) != "End")
        {
            var tokens      = input.Split();
            var soldierType = tokens[0];

            switch (soldierType)
            {
            case "Private":
                var privateSoldier = new Private(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]));
                privates.Add(privateSoldier);
                Console.WriteLine(privateSoldier.ToString());
                break;

            case "LeutenantGeneral":
                var soldiers         = tokens.Skip(5).ToArray();
                var leutenantGeneral = new LeutenantGeneral(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]));
                leutenantGeneral.AddSoldiers(soldiers, privates);
                Console.WriteLine(leutenantGeneral.ToString());
                break;

            case "Engineer":
                if (tokens[5] == "Airforces" || tokens[5] == "Marines")
                {
                    var repairs  = tokens.Skip(6).ToArray();
                    var engineer = new Engineer(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]), tokens[5]);
                    engineer.AddRepairs(repairs);
                    Console.WriteLine(engineer.ToString());
                }
                break;

            case "Commando":
                if (tokens[5] == "Airforces" || tokens[5] == "Marines")
                {
                    var missions = tokens.Skip(6).ToArray();
                    var commando = new Commando(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]), tokens[5]);
                    commando.AddMissions(missions);
                    Console.WriteLine(commando.ToString());
                }
                break;

            case "Spy":
                var spy = new Spy(tokens[1], tokens[2], tokens[3], int.Parse(tokens[4]));
                Console.WriteLine(spy.ToString());
                break;
            }
        }
    }
Exemple #2
0
        //TODO => 40/100 must be refactoring
        public void Run()
        {
            string command = Console.ReadLine();

            while (command != "End")
            {
                var tokens = command.Split();
                var type   = tokens[0].ToLower();

                switch (type)
                {
                case "private":
                    Private @private = new Private(tokens[1], tokens[2], tokens[3], decimal.Parse(tokens[4]));
                    soldiers.Add(@private);
                    break;

                case "leutenantgeneral":
                    LieutenantGeneral lieutenantGeneral = new LieutenantGeneral(tokens[1], tokens[2], tokens[3], decimal.Parse(tokens[4]));
                    for (int i = 5; i < tokens.Length; i++)
                    {
                        Private privat = (Private)soldiers.Single(s => s.Id == tokens[i]);
                        lieutenantGeneral.AddPrivate(privat);
                    }
                    soldiers.Add(lieutenantGeneral);
                    break;

                case "commando":
                    //<id> <firstName> <lastName> <salary> <corps> <mission1CodeName>
                    try
                    {
                        Commando commando = new Commando(tokens[1], tokens[2], tokens[3], decimal.Parse(tokens[4]), tokens[5]);
                        for (int i = 6; i < tokens.Length; i += 2)
                        {
                            Missions missions = new Missions(tokens[i], tokens[i + 1]);
                            commando.AddMissions(missions);
                        }
                        soldiers.Add(commando);
                    }
                    catch (ArgumentException)
                    {
                    }
                    break;

                case "engineer":
                    try
                    {
                        //Engineer <id> <firstName> <lastName> <salary> <corps> <repair1Part> <repair1Hours> … <repairNPart> <repairNHours>
                        Engineer engineer = new Engineer(tokens[1], tokens[2], tokens[3], decimal.Parse(tokens[4]), tokens[5]);
                        for (int i = 6; i < tokens.Length; i += 2)
                        {
                            Repair repair = new Repair(tokens[i], int.Parse(tokens[i + 1]));
                            engineer.AddRepair(repair);
                        }
                        soldiers.Add(engineer);
                    }
                    catch (ArgumentException)
                    {
                    }
                    break;

                case "spy":
                    Spy spy = new Spy(tokens[1], tokens[2], tokens[3], int.Parse(tokens[4]));
                    soldiers.Add(spy);
                    break;
                }
                command = Console.ReadLine();
            }
            soldiers.ForEach(Console.WriteLine);
        }
Exemple #3
0
        public void Run()
        {
            List <ISoldier> soldiers = new List <ISoldier>();
            string          input    = string.Empty;

            while ((input = Console.ReadLine()) != "End")
            {
                ISoldier soldier = null;
                string[] data    = input.Split(" ",
                                               StringSplitOptions.RemoveEmptyEntries);
                string type      = data[0];
                int    id        = int.Parse(data[1]);
                string firstName = data[2];
                string lastName  = data[3];
                if (type == "Private")
                {
                    decimal salary = decimal.Parse(data[4]);
                    soldier = new Private(firstName, lastName, id, salary);
                }
                else if (type == "LieutenantGeneral")
                {
                    decimal            salary  = decimal.Parse(data[4]);
                    ILieutenantGeneral general = new LieutenantGeneral(firstName, lastName, id, salary);
                    foreach (var item in data.Skip(5))
                    {
                        ISoldier privateToAdd = soldiers.First(x => x.Id == int.Parse(item));
                        general.AddPrivates(privateToAdd);
                    }
                    soldier = general;
                }
                else if (type == "Engineer")
                {
                    decimal salary = decimal.Parse(data[4]);
                    string  corps  = data[5];
                    try
                    {
                        IEngineer engineer    = new Engineer(firstName, lastName, id, salary, corps);
                        string[]  repairsData = data
                                                .Skip(6)
                                                .ToArray();
                        for (int i = 0; i < repairsData.Length; i += 2)
                        {
                            string  partName    = repairsData[i];
                            int     hoursWorked = int.Parse(repairsData[i + 1]);
                            IRepair repair      = new Repair(partName, hoursWorked);
                            engineer.AddRepairs(repair);
                        }
                        soldier = engineer;
                    }
                    catch (ArgumentException)
                    {
                        continue;
                    }
                }
                else if (type == "Commando")
                {
                    decimal salary = decimal.Parse(data[4]);
                    string  corps  = data[5];
                    try
                    {
                        ICommando commando     = new Commando(firstName, lastName, id, salary, corps);
                        string[]  missionsData = data
                                                 .Skip(6)
                                                 .ToArray();
                        for (int i = 0; i < missionsData.Length; i += 2)
                        {
                            try
                            {
                                string   codeName = missionsData[i];
                                string   state    = missionsData[i + 1];
                                IMission mission  = new Mission(codeName, state);
                                commando.AddMissions(mission);
                            }
                            catch (ArgumentException)
                            {
                                continue;
                            }
                        }
                        soldier = commando;
                    }
                    catch (ArgumentException ex)
                    {
                        continue;
                    }
                }
                else if (type == "Spy")
                {
                    int codeNumber = int.Parse(data[4]);
                    soldier = new Spy(firstName, lastName, id, codeNumber);
                }
                if (soldier != null)
                {
                    soldiers.Add(soldier);
                }
            }
            foreach (var item in soldiers)
            {
                Console.WriteLine(item);
            }
        }
        public void Run()
        {
            string command = Console.ReadLine();

            while (command != "End")
            {
                string[] tokens = command
                                  .Split(" ")
                                  .ToArray();
                string  type      = tokens[0];
                string  id        = tokens[1];
                string  firstName = tokens[2];
                string  lastName  = tokens[3];
                decimal salary    = decimal.Parse(tokens[4]);

                if (type == "Private")
                {
                    Private soldier = new Private(id, firstName, lastName, salary);
                    this.army.Add(soldier);
                }
                else if (type == "LieutenantGeneral")
                {
                    LieutenantGeneral general = new LieutenantGeneral(
                        id, firstName, lastName, salary);
                    string[] privatesCommand = tokens.Skip(5).ToArray();
                    foreach (var pid in privatesCommand)
                    {
                        ISoldier soldierToAdd = this.army
                                                .First(x => x.Id == pid);

                        general.AddPrivate(soldierToAdd);
                    }
                    this.army.Add(general);
                }
                else if (type == "Engineer")
                {
                    try
                    {
                        string corps = tokens[5];

                        IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps);

                        string[] repearTokens = tokens.Skip(6).ToArray();

                        AddPepairs(engineer, repearTokens);

                        this.army.Add(engineer);
                    }
                    catch (InvalidCorpsExceptions ice)
                    {
                        //continue;
                    }
                }
                else if (type == "Commando")
                {
                    try
                    {
                        string corps = tokens[5];

                        ICommando commando = new Commando
                                                 (id, firstName, lastName, salary, corps);

                        string[] missingTokens = tokens
                                                 .Skip(6)
                                                 .ToArray();

                        for (int i = 0; i < missingTokens.Length; i += 2)
                        {
                            try
                            {
                                string codeName = missingTokens[i];
                                string state    = missingTokens[i + 1];

                                IMissions mission = new Mission(codeName, state);

                                commando.AddMissions(mission);
                            }
                            catch (InvalidStateExceptions ise)
                            {
                                continue;
                            }
                        }
                        this.army.Add(commando);
                    }
                    catch (InvalidCorpsExceptions ice)
                    {
                    }
                }
                else if (type == "Spy")
                {
                    int codeNumber = (int)salary;

                    ISpy spy = new Spy(id, firstName, lastName, codeNumber);

                    this.army.Add(spy);
                }

                command = Console.ReadLine();
            }

            PrintOutput();
        }