private static void AddPrivates(string[] tokens, List <Soldier> soldiers, LeutenantGeneral leutenant)
 {
     for (int i = 5; i < tokens.Length; i++)
     {
         var privateId      = int.Parse(tokens[i]);
         var currentPrivate = soldiers.FirstOrDefault(a => a.Id == privateId);
         leutenant.AddPrivate((Private)currentPrivate);
     }
 }
Beispiel #2
0
 private static void GetPrivates(List <ISoldier> soldiers, string[] tokens, LeutenantGeneral liutenant)
 {
     for (int i = 5; i < tokens.Length; i++)
     {
         var      privateId = int.Parse(tokens[i]);
         ISoldier @private  = soldiers.FirstOrDefault(p => p.Id == privateId);
         liutenant.AddPrivate(@private);
     }
 }
Beispiel #3
0
 private static void ParseLeutenantGeneral(List <Soldier> soldiers, string[] tokens)
 {
     soldiers.Add(new LeutenantGeneral(tokens[1], tokens[2], tokens[3], decimal.Parse(tokens[4])));
     tokens = tokens.Skip(5).ToArray();
     foreach (var privateStr in tokens)
     {
         Private          privateObj       = (Private)soldiers.Single(x => x.Id == privateStr);
         LeutenantGeneral leutenantGeneral = (LeutenantGeneral)soldiers.Last();
         leutenantGeneral.AddPrivate(privateObj);
     }
 }
Beispiel #4
0
    private static void AddLeutenantGeneral(string[] tokens)
    {
        LeutenantGeneral general = new LeutenantGeneral(tokens[1], tokens[2], tokens[3], double.Parse(tokens[4]));

        for (int i = 5; i < tokens.Length; i++)
        {
            Private privat = (Private)soldiers.Single(s => s.Id == tokens[i]);
            general.AddPrivate(privat);
        }

        soldiers.Add(general);
    }
Beispiel #5
0
    private static void AddLeutenantGeneral(List <ISoldier> soldiers, string[] inputParams)
    {
        LeutenantGeneral leutenantGeneral = new LeutenantGeneral(inputParams[1], inputParams[2], inputParams[3],
                                                                 double.Parse(inputParams[4]));

        int numberOfPrivates = inputParams.Length - 5;

        for (int i = 0; i < numberOfPrivates; i++)
        {
            Private _private = (Private)soldiers.FirstOrDefault(x => x.Id == inputParams[5 + i]);

            leutenantGeneral.AddPrivate(_private);
        }

        soldiers.Add(leutenantGeneral);
    }
Beispiel #6
0
    private static ISoldier CreateLeutenantGeneral(string[] soldierInfo, string id, string firstName, string lastName)
    {
        var salary = decimal.Parse(soldierInfo[4]);
        var currentLeutenantGeneral = new LeutenantGeneral(id, firstName, lastName, salary);

        foreach (var privateId in soldierInfo.Skip(5))
        {
            var soldier = Soldiers.FirstOrDefault(s => s.Id == privateId);

            if (soldier is IPrivate @private)
            {
                currentLeutenantGeneral.AddPrivate(@private);
            }
        }

        return(currentLeutenantGeneral);
    }
    private static LeutenantGeneral GetGeneralData(string[] soldierInfo, List <ISoldier> soldiers)
    {
        var id     = soldierInfo[1];
        var first  = soldierInfo[2];
        var last   = soldierInfo[3];
        var salary = double.Parse(soldierInfo[4]);

        var general = new LeutenantGeneral(id, first, last, salary);

        var generalSubordinatesIds = soldierInfo.Skip(5).ToArray();

        if (soldiers.Count > 0)
        {
            soldiers
            .Where(p => generalSubordinatesIds.Contains(p.Id))
            .ToList()
            .ForEach(p => general.AddPrivate(p));
        }

        return(general);
    }
Beispiel #8
0
        public ISoldier CreateSoldier(string[] soldierStrings)
        {
            var soldierType = soldierStrings[0];
            var id          = int.Parse(soldierStrings[1]);
            var firstName   = soldierStrings[2];
            var lastName    = soldierStrings[3];

            switch (soldierType)
            {
            case "Private":
                var privateSalary = double.Parse(soldierStrings[4]);
                return(new Private(id, firstName, lastName, privateSalary));

            case "LeutenantGeneral":
                var ltSalary  = double.Parse(soldierStrings[4]);
                var currentLt = new LeutenantGeneral(id, firstName, lastName, ltSalary);

                for (int i = 5; i < soldierStrings.Length; i++)
                {
                    var privateId = int.Parse(soldierStrings[i]);
                    if (DataManager.SoldierExists(privateId))
                    {
                        currentLt.AddPrivate(DataManager.ReturnPrivateSoldier(privateId));
                    }
                }

                return(currentLt);

            case "Engineer":
                var engineerSalary  = double.Parse(soldierStrings[4]);
                var corps           = soldierStrings[5];
                var currentEngineer = new Engineer(id, firstName, lastName, engineerSalary, corps);

                for (int i = 6; i < soldierStrings.Length; i += 2)
                {
                    var part   = soldierStrings[i];
                    var hours  = int.Parse(soldierStrings[i + 1]);
                    var repair = new Repair(part, hours);
                    currentEngineer.AddRepair(repair);
                }

                return(currentEngineer);

            case "Commando":
                var commandoSalary  = double.Parse(soldierStrings[4]);
                var commandoCorps   = soldierStrings[5];
                var currentCommando = new Commando(id, firstName, lastName, commandoSalary, commandoCorps);

                for (int i = 6; i < soldierStrings.Length; i += 2)
                {
                    try
                    {
                        var codeName = soldierStrings[i];
                        var state    = soldierStrings[i + 1];
                        var mission  = new Mission(codeName, state);
                        currentCommando.AddMission(mission);
                    }
                    catch (Exception e)
                    {
                    }
                }

                return(currentCommando);

            case "Spy":
                var codeNumber = int.Parse(soldierStrings[4]);
                return(new Spy(id, firstName, lastName, codeNumber));

            default:
                return(null);
            }
        }
    public static ISoldier CreateSoldier(string input)
    {
        string[] token = input.Split();

        var soldierType       = token[0];
        var soldierId         = int.Parse(token[1]);
        var soldierFirstName  = token[2];
        var soldierSecondName = token[3];

        switch (soldierType)
        {
        case "Private":
            Private priv = new Private(soldierId, soldierFirstName, soldierSecondName, double.Parse(token[4]));
            Privates.Add(soldierId, priv);
            return(priv);

        case "LeutenantGeneral":
            LeutenantGeneral leutenant = new LeutenantGeneral(
                soldierId,
                soldierFirstName,
                soldierSecondName,
                double.Parse(token[4]));
            for (int i = 5; i < token.Length; i++)
            {
                int      searchedID = int.Parse(token[i]);
                IPrivate p          = Privates[searchedID];
                leutenant.AddPrivate(p);
            }

            Privates.Add(soldierId, leutenant);
            return(leutenant);

        case "Engineer":
            Engineer engineer = new Engineer(
                soldierId,
                soldierFirstName,
                soldierSecondName,
                double.Parse(token[4]),
                token[5]);
            for (int i = 6; i < token.Length; i += 2)
            {
                IRepair r = new Repair(token[i], int.Parse(token[i + 1]));
                engineer.AddRepair(r);
            }
            Privates.Add(soldierId, engineer);
            return(engineer);

        case "Commando":
            Commando commando = new Commando(
                soldierId,
                soldierFirstName,
                soldierSecondName,
                double.Parse(token[4]),
                token[5]);
            for (int i = 6; i < token.Length; i += 2)
            {
                var missionName  = token[i];
                var missionState = token[i + 1];
                try
                {
                    Mission m = new Mission(missionName, missionState);
                    commando.AddMission(m);
                }
                catch (Exception)
                {
                }
            }
            Privates.Add(soldierId, commando);
            return(commando);

        case "Spy":
            int soldeirCodeNumber = int.Parse(token[4]);
            Spy spy = new Spy(soldierId, soldierFirstName, soldierSecondName, soldeirCodeNumber);
            return(spy);

        default: return(null);
        }
    }
        private static void GetSoldiers(List <ISoldier> militaryForces)
        {
            string soldierInput = String.Empty;

            while ((soldierInput = Console.ReadLine()) != "End")
            {
                try
                {
                    string[] tokens    = soldierInput.Split();
                    int      id        = int.Parse(tokens[1]);
                    string   firstName = tokens[2];
                    string   lastName  = tokens[3];
                    ISoldier soldier   = null;

                    switch (tokens[0])
                    {
                    case "Private":
                        soldier = new Private(id, firstName, lastName, decimal.Parse(tokens[4]));
                        break;

                    case "LeutenantGeneral":
                        var leutenant = new LeutenantGeneral(id, firstName, lastName, decimal.Parse(tokens[4]));

                        for (int i = 5; i < tokens.Length; i++)
                        {
                            ISoldier @private = militaryForces.First(p => p.Id == int.Parse(tokens[i]));
                            leutenant.AddPrivate(@private);
                        }
                        soldier = leutenant;

                        break;

                    case "Engineer":
                        var engineer = new Engineer(id, firstName, lastName, decimal.Parse(tokens[4]), tokens[5]);

                        for (int i = 6; i < tokens.Length; i += 2)
                        {
                            IRepairable repair = new Repair(tokens[i], int.Parse(tokens[i + 1]));
                            engineer.AddRepair(repair);
                        }
                        soldier = engineer;

                        break;

                    case "Commando":
                        var commando = new Commando(id, firstName, lastName, decimal.Parse(tokens[4]), tokens[5]);

                        for (int i = 6; i < tokens.Length; i += 2)
                        {
                            try
                            {
                                IMissionable mission = new Mission(tokens[i], tokens[i + 1]);
                                commando.AddMission(mission);
                            }
                            catch (Exception)
                            {
                            }
                        }
                        soldier = commando;

                        break;

                    case "Spy":
                        soldier = new Spy(id, firstName, lastName, int.Parse(tokens[4]));
                        break;

                    default: throw new Exception();
                    }

                    militaryForces.Add(soldier);
                }
                catch (Exception)
                {
                }
            }
        }
Beispiel #11
0
        public static ISoldier Soldier(string input)
        {
            var soldierInfo = input.Split();

            var soldierType       = soldierInfo[0];
            var soldierId         = soldierInfo[1];
            var soldierFirstName  = soldierInfo[2];
            var soldierSecondName = soldierInfo[3];

            switch (soldierType)
            {
            case "Private":
            {
                var soldierSalary = decimal.Parse(soldierInfo[4]);
                return(new Private(soldierId, soldierFirstName, soldierSecondName, soldierSalary));
            }

            case "LeutenantGeneral":
            {
                var soldierSalary = decimal.Parse(soldierInfo[4]);
                var leutenant     = new LeutenantGeneral(soldierId, soldierFirstName, soldierSecondName, soldierSalary);

                for (int i = 5; i < soldierInfo.Length; i++)
                {
                    leutenant.AddPrivate(soldierInfo[i]);
                }

                return(leutenant);
            }

            case "Engineer":
            {
                var soldierSalary = decimal.Parse(soldierInfo[4]);
                var soldeirCorps  = soldierInfo[5];

                var engineer = new Engineer(soldierId, soldierFirstName, soldierSecondName, soldierSalary, soldeirCorps);

                for (int i = 6; i < soldierInfo.Length; i += 2)
                {
                    var part  = soldierInfo[i];
                    var hours = int.Parse(soldierInfo[i + 1]);

                    var repair = new Repair(part, hours);

                    engineer.AddRepair(repair);
                }

                return(engineer);
            }

            case "Commando":
            {
                var soldierSalary = decimal.Parse(soldierInfo[4]);
                var soldeirCorps  = soldierInfo[5];

                var commando = new Commando(soldierId, soldierFirstName, soldierSecondName, soldierSalary, soldeirCorps);

                for (int i = 6; i < soldierInfo.Length; i += 2)
                {
                    var missionName  = soldierInfo[i];
                    var missionState = soldierInfo[i + 1];

                    try
                    {
                        var mission = new Mission(missionName, missionState);

                        commando.AddMission(mission);
                    }
                    catch (Exception)
                    {
                    }
                }

                return(commando);
            }

            case "Spy":
            {
                var soldeirCodeNumber = soldierInfo[4];

                return(new Spy(soldierId, soldierFirstName, soldierSecondName, int.Parse(soldeirCodeNumber)));
            }
            }

            return(null);
        }
Beispiel #12
0
        public static ISoldier CreateSoldier(string[] soldierParams, IReadOnlyDictionary <string, ISoldier> soldiers)
        {
            var soldierType = soldierParams[0];
            var id          = soldierParams[1];
            var firstName   = soldierParams[2];
            var lastName    = soldierParams[3];

            switch (soldierType)
            {
            case "Private":
            {
                var salary = double.Parse(soldierParams[4]);

                return(new Private(id, firstName, lastName, salary));
            }

            case "Spy":
            {
                var codeNumber = int.Parse(soldierParams[4]);

                return(new Spy(id, firstName, lastName, codeNumber));
            }

            case "Commando":
            {
                var salary         = double.Parse(soldierParams[4]);
                var corps          = soldierParams[5];
                var missionsParams = soldierParams.Skip(6).ToArray();

                var commando = new Commando(id, firstName, lastName, salary, corps);
                for (var i = 0; i < missionsParams.Count(); i = i + 2)
                {
                    try
                    {
                        var mission = MissionFactory.CreateMission(missionsParams[i], missionsParams[i + 1]);
                        commando.AddMission(mission);
                    }
                    catch (InvalidMissionStateException)
                    {
                    }
                }

                return(commando);
            }

            case "Engineer":
            {
                var salary = double.Parse(soldierParams[4]);
                var corps  = soldierParams[5];

                var repairParams = soldierParams.Skip(6).ToArray();

                var engineer = new Engineer(id, firstName, lastName, salary, corps);
                for (var i = 0; i < repairParams.Count(); i = i + 2)
                {
                    var repair = RepairFactory.CreateRepair(repairParams[i], repairParams[i + 1]);
                    engineer.AddRepair(repair);
                }

                return(engineer);
            }

            case "LeutenantGeneral":
            {
                var salary = double.Parse(soldierParams[4]);

                var soldierIds       = soldierParams.Skip(5).ToArray();
                var leutenantGeneral = new LeutenantGeneral(id, firstName, lastName, salary);
                for (var i = 0; i < soldierIds.Count(); i++)
                {
                    var soldierId = soldierIds[i];
                    leutenantGeneral.AddPrivate(soldiers[soldierId] as Private);
                }

                return(leutenantGeneral);
            }

            default:
            {
                throw new InvalidSoldierTypeException();
            }
            }
        }
Beispiel #13
0
    public static Soldier GetSoldier(List <Soldier> soldiers, string soldierType, string[] data)
    {
        int    id        = int.Parse(data[1]);
        string firstName = data[2];
        string lastName  = data[3];

        switch (soldierType)
        {
        case "Private":
            decimal privateSalary = decimal.Parse(data[4]);

            return(new Private(id, firstName, lastName, privateSalary));

        case "LeutenantGeneral":
            decimal          leutenantSalary = decimal.Parse(data[4]);
            LeutenantGeneral leutenant       = new LeutenantGeneral(id, firstName, lastName, leutenantSalary);
            for (int i = 5; i < data.Length; i++)
            {
                int     privateId      = int.Parse(data[i]);
                Private currentPrivate = (Private)soldiers.FirstOrDefault(p => p.Id == privateId);

                leutenant.AddPrivate(currentPrivate);
            }

            return(leutenant);

        case "Engineer":
            decimal  engineerSalary = decimal.Parse(data[4]);
            string   enginnerCopr   = data[5];
            Engineer engineer       = new Engineer(id, firstName, lastName, engineerSalary, enginnerCopr);
            for (int i = 6; i < data.Length; i += 2)
            {
                string part   = data[i];
                int    hours  = int.Parse(data[i + 1]);
                Repair repair = new Repair(part, hours);

                engineer.AddRepair(repair);
            }

            return(engineer);

        case "Commando":
            decimal  commandoSalary = decimal.Parse(data[4]);
            string   commandoCopr   = data[5];
            Commando commando       = new Commando(id, firstName, lastName, commandoSalary, commandoCopr);

            for (int i = 6; i < data.Length; i += 2)
            {
                string  codeName = data[i];
                string  state    = data[i + 1];
                Mission mission;
                try
                {
                    mission = new Mission(codeName, state);
                }
                catch (ArgumentException ex)
                {
                    continue;
                }

                commando.AddMission(mission);
            }

            return(commando);

        case "Spy":
            int codeNumber = int.Parse(data[4]);
            return(new Spy(id, firstName, lastName, codeNumber));

        default:
            throw new ArgumentException();
        }
    }
Beispiel #14
0
    private static void SoldierCreator(string[] data)
    {
        int     id        = int.Parse(data[1]);
        string  firstName = data[2];
        string  lastName  = data[3];
        decimal salary    = decimal.Parse(data[4]);

        switch (data[0])
        {
        case "Private":
            soldiers.Add(new Private(id, firstName, lastName, salary));
            break;

        case "LeutenantGeneral":
            var general = new LeutenantGeneral(id, firstName, lastName, salary);
            for (int i = 5; i < data.Length; i++)
            {
                int     privateId = int.Parse(data[i]);
                Private p         = (Private)soldiers.FirstOrDefault(s => s.Id == privateId);
                general.AddPrivate(p);
            }
            soldiers.Add(general);
            break;

        case "Engineer":
            if (Corps.TryParse(data[5], out Corps corps))
            {
                var engineer = new Engineer(id, firstName, lastName, salary, corps);
                for (int i = 6; i < data.Length - 1; i += 2)
                {
                    string partName = data[i];
                    int    hours    = int.Parse(data[i + 1]);
                    Repair r        = new Repair(partName, hours);
                    engineer.AddRepair(r);
                }
                soldiers.Add(engineer);
            }
            break;

        case "Commando":
            if (Corps.TryParse(data[5], out Corps c))
            {
                var commando = new Commando(id, firstName, lastName, salary, c);
                for (int i = 6; i < data.Length - 1; i += 2)
                {
                    string codeName = data[i];
                    if (State.TryParse(data[i + 1], out State state))
                    {
                        Mission m = new Mission(codeName, state);
                        commando.AddMission(m);
                    }
                }
                soldiers.Add(commando);
            }
            break;

        case "Spy":
            int codeNumber = int.Parse(data[4]);
            soldiers.Add(new Spy(id, firstName, lastName, codeNumber));
            break;

        default:
            break;
        }
    }
Beispiel #15
0
    public static void Main()
    {
        IList <ISoldier> soldiers = new List <ISoldier>();

        while (true)
        {
            var input = Console.ReadLine().Split(' ').ToArray();
            if (input[0] == "End")
            {
                break;
            }
            int    id         = int.Parse(input[1]);
            string firstName  = input[2];
            string secondName = input[3];

            switch (input[0])
            {
            case "Private":
                IPrivate privater = new Private(id, firstName, secondName, double.Parse(input[4]));
                soldiers.Add(privater);
                break;

            case "Commando":
                Corps corp;
                try
                {
                    corp = (Corps)Enum.Parse(typeof(Corps), input[5]);
                    ICommando commando = new Commando(id, firstName, secondName, double.Parse(input[4]), corp);
                    if (input.Length > 6)
                    {
                        for (int i = 6; i < input.Length; i += 2)
                        {
                            try
                            {
                                MissionState missionstate;
                                missionstate = (MissionState)Enum.Parse(typeof(MissionState), input[i + 1]);
                                IMission mission = new Mission(missionstate, input[i]);
                                commando.AddMission(mission);
                            }
                            catch (Exception e)
                            {
                            }
                        }
                    }
                    soldiers.Add(commando);
                    break;
                }
                catch (Exception ex)
                {
                    break;
                }

            case "LeutenantGeneral":
                ILeutenantGeneral leutenantGeneral = new LeutenantGeneral(id, firstName, secondName, double.Parse(input[4]));
                for (int i = 5; i < input.Length; i++)
                {
                    ISoldier pr = soldiers.First(x => x.Id == int.Parse(input[i]));
                    leutenantGeneral.AddPrivate(pr);
                }
                soldiers.Add(leutenantGeneral);
                break;

            case "Engineer":
                Corps corps;
                try
                {
                    corps = (Corps)Enum.Parse(typeof(Corps), input[5]);
                    IEngineer engineer = new Engineer(id, firstName, secondName, double.Parse(input[4]), corps);
                    if (input.Length > 6)
                    {
                        for (int i = 6; i < input.Length; i += 2)
                        {
                            IRepair repair = new Repair(input[i], int.Parse(input[i + 1]));
                            engineer.AddRepair(repair);
                        }
                    }
                    soldiers.Add(engineer);
                    break;
                }
                catch (Exception ex)
                {
                    //Console.WriteLine(ex.Message);
                    break;
                }

            case "Spy":
                ISpy spy = new Spy(id, firstName, secondName, int.Parse(input[4]));
                soldiers.Add(spy);
                break;
            }
        }
        foreach (var soldier in soldiers)
        {
            Console.WriteLine(soldier);
        }
    }
Beispiel #16
0
    private static void AddSoldiers(List <ISoldier> soldiers)
    {
        var input = Console.ReadLine();

        while (input != "End")
        {
            var soldierArgs = input.Split().ToList();
            var type        = soldierArgs[0];
            soldierArgs.RemoveAt(0);

            switch (type)
            {
            case "Private":
                var id             = soldierArgs[0];
                var firstName      = soldierArgs[1];
                var lastName       = soldierArgs[2];
                var salary         = double.Parse(soldierArgs[3]);
                var privateSoldier = new Private(id, firstName, lastName, salary);
                soldiers.Add(privateSoldier);
                break;

            case "LeutenantGeneral":
                id        = soldierArgs[0];
                firstName = soldierArgs[1];
                lastName  = soldierArgs[2];
                salary    = double.Parse(soldierArgs[3]);

                var leutenantGeneral = new LeutenantGeneral(id, firstName, lastName, salary);
                for (int i = 4; i < soldierArgs.Count; i++)
                {
                    var privateId   = soldierArgs[i];
                    var currPrivate = soldiers.First(s => s.Id == privateId);
                    leutenantGeneral.AddPrivate(currPrivate);
                }

                soldiers.Add(leutenantGeneral);
                break;

            case "Engineer":
                id        = soldierArgs[0];
                firstName = soldierArgs[1];
                lastName  = soldierArgs[2];
                salary    = double.Parse(soldierArgs[3]);
                var corps = soldierArgs[4];

                var engineer = new Engineer(id, firstName, lastName, salary, corps);
                for (int i = 5; i < soldierArgs.Count; i += 2)
                {
                    var repairPart  = soldierArgs[i];
                    var repairHours = int.Parse(soldierArgs[i + 1]);
                    engineer.AddRepair(repairPart, repairHours);
                }

                if (engineer.Corps != "Invalid")
                {
                    soldiers.Add(engineer);
                }
                break;

            case "Commando":
                id        = soldierArgs[0];
                firstName = soldierArgs[1];
                lastName  = soldierArgs[2];
                salary    = double.Parse(soldierArgs[3]);
                corps     = soldierArgs[4];
                var commando = new Commando(id, firstName, lastName, salary, corps);

                for (int i = 5; i < soldierArgs.Count; i += 2)
                {
                    var codeName = soldierArgs[i];
                    var state    = soldierArgs[i + 1];
                    commando.AddMission(codeName, state);
                }

                if (commando.Corps != "Invalid")
                {
                    soldiers.Add(commando);
                }
                break;

            case "Spy":
                id        = soldierArgs[0];
                firstName = soldierArgs[1];
                lastName  = soldierArgs[2];
                var codeNumber = int.Parse(soldierArgs[3]);
                var spy        = new Spy(id, firstName, lastName, codeNumber);
                soldiers.Add(spy);
                break;
            }

            input = Console.ReadLine();
        }
    }
Beispiel #17
0
        public static ISoldier GetUnit(List <string> args, MilitaryEliteManager manager)
        {
            string type = args[0];

            args.RemoveAt(0);

            switch (type)
            {
            case "Private":
                return(new Private(args[0], args[1], args[2], double.Parse(args[3])));

            case "LeutenantGeneral":
            {
                LeutenantGeneral newSoldier    = new LeutenantGeneral(args[0], args[1], args[2], double.Parse(args[3]));
                List <string>    privatesToAdd = args.Skip(4).ToList();
                foreach (var privateSoldierId in privatesToAdd)
                {
                    newSoldier.AddPrivate(manager.GetSoldier(privateSoldierId));
                }

                return(newSoldier);
            }

            case "Engineer":
            {
                try
                {
                    Engineer newEngineer = new Engineer(args[0], args[1], args[2], double.Parse(args[3]), args[4]);

                    List <string> parts = args.Skip(5).ToList();

                    for (int i = 0; i < parts.Count; i += 2)
                    {
                        string partName = parts[i];
                        int    hours    = int.Parse(parts[i + 1]);

                        IRepair newRepair = new Repair(partName, hours);
                        newEngineer.AddRepair(newRepair);
                    }

                    return(newEngineer);
                }
                catch (ArgumentException e)
                {
                    exceptions.AppendLine(e.Message);
                }
            }
            break;

            case "Commando":
            {
                try
                {
                    Commando newCommando = new Commando(args[0], args[1], args[2], double.Parse(args[3]), args[4]);

                    List <string> missions = args.Skip(5).ToList();

                    for (int i = 0; i < missions.Count; i += 2)
                    {
                        string missionName  = missions[i];
                        string missionState = missions[i + 1];

                        try
                        {
                            IMission newMission = new Mission(missionName, missionState);
                            newCommando.AddRepair(newMission);
                        }
                        catch (ArgumentException e)
                        {
                            exceptions.AppendLine(e.Message);
                        }
                    }

                    return(newCommando);
                }
                catch (ArgumentException e)
                {
                    exceptions.AppendLine(e.Message);
                }
            }
            break;

            case "Spy":
            default:
            {
                return(new Spy(args[0], args[1], args[2], int.Parse(args[3])));
            }
            }

            return(null);
        }
Beispiel #18
0
    public static void Main()
    {
        var soldiers = new List <ISoldier>();

        string inputLine;

        while ((inputLine = Console.ReadLine()) != "End")
        {
            var soldierInfo = inputLine.Split();

            var soldierType = soldierInfo[0];
            var id          = int.Parse(soldierInfo[1]);
            var firstName   = soldierInfo[2];
            var lastName    = soldierInfo[3];
            var salary      = double.Parse(soldierInfo[4]);

            ISoldier soldier = null;

            switch (soldierType)
            {
            case "Private":
                soldier = new Private(id, firstName, lastName, salary);
                break;

            case "LeutenantGeneral":
                var leutenantGeneral = new LeutenantGeneral(id, firstName, lastName, salary);

                foreach (var privateSoldierId in soldierInfo.Skip(5))
                {
                    var      privateId      = int.Parse(privateSoldierId);
                    ISoldier privateSoldier = soldiers.FirstOrDefault(s => s.Id == privateId);
                    leutenantGeneral.AddPrivate(privateSoldier);
                }

                soldier = leutenantGeneral;
                break;

            case "Engineer":
                var validEngineerCorps = Enum.TryParse(typeof(Corps), soldierInfo[5], out object engineerCorps);

                if (!validEngineerCorps)
                {
                    continue;
                }

                var engineer = new Engineer(id, firstName, lastName, salary, (Corps)engineerCorps);

                for (int i = 6; i < soldierInfo.Length; i += 2)
                {
                    var partName    = soldierInfo[i];
                    var hoursWorked = int.Parse(soldierInfo[i + 1]);
                    var repair      = new Repair(partName, hoursWorked);
                    engineer.AddRepair(repair);
                }

                soldier = engineer;
                break;

            case "Commando":
                var validCommandoCorps = Enum.TryParse(typeof(Corps), soldierInfo[5], out object commandoCorps);

                if (!validCommandoCorps)
                {
                    continue;
                }

                var commando = new Commando(id, firstName, lastName, salary, (Corps)commandoCorps);

                for (int i = 6; i < soldierInfo.Length; i += 2)
                {
                    var codeName          = soldierInfo[i];
                    var validMissionState = Enum.TryParse(typeof(State), soldierInfo[i + 1], out object missionState);

                    if (!validMissionState)
                    {
                        continue;
                    }

                    var mission = new Mission(codeName, (State)missionState);
                    commando.AddMission(mission);
                }

                soldier = commando;
                break;

            case "Spy":
                var codeNumber = int.Parse(soldierInfo[4]);
                soldier = new Spy(id, firstName, lastName, codeNumber);
                break;
            }

            soldiers.Add(soldier);
        }

        foreach (var soldier in soldiers)
        {
            Console.WriteLine(soldier);
        }
    }
    static void Main()                       // 100/100 -  Виж я пак!
    {
        var solders = new List <ISoldier>(); // !! за кол-я да използваме най-абстр-я възможен тип!

        string input;

        while ((input = Console.ReadLine()) != "End")
        {
            // “Private <id> <firstName> <lastName> <salary>”
            string[] tokens      = input.Split();
            string   soldierType = tokens[0];
            int      id          = int.Parse(tokens[1]);
            string   firstName   = tokens[2];
            string   lastName    = tokens[3];
            decimal  salary      = decimal.Parse(tokens[4]);

            ISoldier soldier = null;    // !!!!

            try
            {
                switch (soldierType)
                {
                case "Private":
                    soldier = new Private(id, firstName, lastName, salary);
                    break;

                case "LeutenantGeneral":
                    var leutenant = new LeutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < tokens.Length; i++)
                    {
                        int      privateId = int.Parse(tokens[i]);
                        ISoldier @private  = solders.First(p => p.Id == privateId);
                        leutenant.AddPrivate(@private);
                    }

                    soldier = leutenant;     // !!!
                    break;

                case "Engineer":
                    string engineerCorps = tokens[5];
                    var    engineer      = new Engineer(id, firstName, lastName, salary, engineerCorps);

                    for (int i = 6; i < tokens.Length; i++)
                    {
                        string partName    = tokens[i];
                        int    hoursWorked = int.Parse(tokens[++i]);    // !!!
                        try
                        {
                            IRepair repair = new Repair(partName, hoursWorked);
                            engineer.AddRepair(repair);
                        }
                        catch { }
                    }
                    soldier = engineer;
                    break;

                case "Commando":
                    string commandoCorps = tokens[5];
                    var    commando      = new Commando(id, firstName, lastName, salary, commandoCorps);

                    for (int i = 6; i < tokens.Length; i++)
                    {
                        string codeName     = tokens[i];
                        string missionState = tokens[++i];       // !!
                        try
                        {
                            IMission mission = new Mission(codeName, missionState);
                            commando.AddMission(mission);
                        }
                        catch { }
                    }
                    soldier = commando;
                    break;

                case "Spy":
                    int codeNumber = (int)salary;
                    soldier = new Spy(id, firstName, lastName, codeNumber);
                    break;

                default:
                    throw new ArgumentException("Ïnvalid soldier type!");
                }

                solders.Add(soldier);
            }
            catch (Exception)
            {
                // Console.WriteLine(e.Message);
            }
        }

        foreach (var s in solders)
        {
            //// var 2:
            //var soldierType = s.GetType();
            //var actualSoldier = Convert.ChangeType(s, soldierType); // от какъв тип - в какъв тип да се превърне!
            //Console.WriteLine(actualSoldier);

            // var 1:
            Console.WriteLine(s);
        }
    }
Beispiel #20
0
        public static void Main()
        {
            IList <ISoldier> army;

            string input;

            army = new List <ISoldier>();

            while ((input = Console.ReadLine()) != "End")
            {
                var    args = input.Split();
                string type = args[0];
                string id   = args[1];

                switch (type)
                {
                case "Private":
                    army.Add(new Private(id, args[2], args[3], double.Parse(args[4])));
                    break;

                case "Spy":
                    army.Add(new Spy(id, args[2], args[3], int.Parse(args[4])));
                    break;

                case "LeutenantGeneral":
                    LeutenantGeneral leutenantGeneral = new LeutenantGeneral(id, args[2], args[3], double.Parse(args[4]));

                    for (int i = 5; i < args.Length; i++)
                    {
                        leutenantGeneral.AddPrivate(army.First(s => s.Id == args[i]));
                    }

                    army.Add(leutenantGeneral);
                    break;

                case "Commando":
                    Commando commando;

                    try
                    {
                        commando = new Commando(id, args[2], args[3], double.Parse(args[4]), args[5]);
                    }
                    catch (Exception)
                    {
                        break;
                    }

                    for (int i = 6; i < args.Length - 1; i += 2)
                    {
                        Mission mission;
                        try
                        {
                            mission = new Mission(args[i], args[i + 1]);
                        }
                        catch (Exception)
                        {
                            continue;
                        }
                        commando.AddMission(mission);
                    }

                    army.Add(commando);
                    break;

                case "Engineer":
                    Engineer engineer;
                    try
                    {
                        engineer = new Engineer(id, args[2], args[3], double.Parse(args[4]), args[5]);
                    }
                    catch (Exception)
                    {
                        break;
                    }

                    for (int i = 6; i < args.Length - 1; i += 2)
                    {
                        engineer.AddRepair(new Repair(args[i], int.Parse(args[i + 1])));
                    }

                    army.Add(engineer);
                    break;
                }
            }

            foreach (var soldier in army)
            {
                Console.WriteLine(soldier);
            }
        }
Beispiel #21
0
        static void Main(string[] args)
        {
            var army = new List <ISoldier>();

            string input;

            while ((input = Console.ReadLine()) != "End")
            {
                var inputArgs = input
                                .Split();

                var type      = inputArgs[0];
                var id        = inputArgs[1];
                var firstName = inputArgs[2];
                var lastName  = inputArgs[3];
                var salary    = decimal.Parse(inputArgs[4]);

                if (type == "Private")
                {
                    var @private = new Private(id, firstName, lastName, salary);

                    army.Add(@private);
                }
                else if (type == "LeutenantGeneral")
                {
                    var general = new LeutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < inputArgs.Length; i++)
                    {
                        var currentId = inputArgs[i];

                        var @private = army
                                       .First(p => p.Id == currentId);

                        general.AddPrivate(@private);
                    }

                    army.Add(general);
                }
                else if (type == "Engineer")
                {
                    try
                    {
                        var corps = inputArgs[5];

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

                        for (int i = 6; i < inputArgs.Length; i += 2)
                        {
                            var partName  = inputArgs[i];
                            var workHours = int.Parse(inputArgs[i + 1]);

                            var repair = new Repair(partName, workHours);


                            engineer.AddRepair(repair);
                        }

                        army.Add(engineer);
                    }
                    catch (Exception) { }
                }
                else if (type == "Commando")
                {
                    var corps = inputArgs[5];

                    try
                    {
                        var commando = new Commando(id, firstName, lastName, salary, corps);

                        for (int i = 6; i < inputArgs.Length; i += 2)
                        {
                            try
                            {
                                var codeName = inputArgs[i];
                                var state    = inputArgs[i + 1];

                                var mission = new Mission(codeName, state);

                                commando.AddMission(mission);
                            }
                            catch (Exception)
                            {
                                continue;
                            }
                        }

                        army.Add(commando);
                    }
                    catch (Exception)
                    {
                    }
                }
                else if (type == "Spy")
                {
                    var codeNumber = (int)salary;
                    var spy        = new Spy(id, firstName, lastName, codeNumber);

                    army.Add(spy);
                }
            }

            foreach (var soldier in army)
            {
                Type type = soldier.GetType();

                var actual = Convert.ChangeType(soldier, type);

                Console.WriteLine(actual);
            }
        }
Beispiel #22
0
    static void Main(string[] args)
    {
        var    soldiers = new List <ISoldier>();
        string input;

        while ((input = Console.ReadLine()) != "End")
        {
            string[] tokens      = input.Split();
            string   soldierType = tokens[0];
            int      id          = int.Parse(tokens[1]);
            string   firstName   = tokens[2];
            string   lastName    = tokens[3];
            decimal  salary      = decimal.Parse(tokens[4]);

            ISoldier soldier = null;
            try
            {
                switch (soldierType)
                {
                case "Private":
                    soldier = new Private(id, firstName, lastName, salary);
                    break;

                case "LeutenantGeneral":
                    var leutenant = new LeutenantGeneral(id, firstName, lastName, salary);

                    for (int i = 5; i < tokens.Length; i++)
                    {
                        int      soldierId = int.Parse(tokens[i]);
                        ISoldier @private  = soldiers.First(p => p.Id == soldierId);
                        leutenant.AddPrivate(@private);
                    }
                    soldier = leutenant;
                    break;

                case "Engineer":
                    string   engineerCorps = tokens[5];
                    Engineer engineer      = new Engineer(id, firstName, lastName, salary, engineerCorps);

                    for (int i = 6; i < tokens.Length; i++)
                    {
                        string partName    = tokens[i];
                        int    hoursWorked = int.Parse(tokens[++i]);

                        IRepair repair = new Repair(partName, hoursWorked);
                        engineer.AddRepair(repair);
                    }

                    soldier = engineer;
                    break;

                case "Commando":
                    string commandCorps = tokens[5];
                    var    commando     = new Commando(id, firstName, lastName, salary, commandCorps);
                    for (int i = 6; i < tokens.Length; i++)
                    {
                        string codeName     = tokens[i];
                        string missionState = tokens[++i];
                        try
                        {
                            IMission mission = new Mission(codeName, missionState);
                            commando.AddMission(mission);
                        }
                        catch { }
                    }

                    soldier = commando;
                    break;

                case "Spy":
                    int codeNumber = (int)salary;
                    soldier = new Spy(id, firstName, lastName, codeNumber);
                    break;

                default:
                    throw new ArgumentException("Invalid soldier type!");
                }
                soldiers.Add(soldier);
            }
            catch {}
        }

        foreach (var soldier in soldiers)
        {
            Console.WriteLine(soldier);
        }
    }
    private static ISoldier CreateSoldier(List <ISoldier> soldiers, string[] tokens, string type, int id, string firstName, string lastName, decimal salary)
    {
        ISoldier soldier;

        switch (type)
        {
        case "Private":
            soldier = new Private(id, firstName, lastName, salary);
            break;

        case "LeutenantGeneral":
            var leutenant = new LeutenantGeneral(id, firstName, lastName, salary);

            for (int i = 5; i < tokens.Length; i++)
            {
                int      privateId      = int.Parse(tokens[i]);
                ISoldier privateSoldier = soldiers.First(p => p.Id == privateId);
                leutenant.AddPrivate(privateSoldier);
            }

            soldier = leutenant;
            break;

        case "Engineer":
            string engineerCorps = tokens[5];
            var    engineer      = new Engineer(id, firstName, lastName, salary, engineerCorps);

            for (int i = 6; i < tokens.Length; i++)
            {
                string partName    = tokens[i];
                int    hoursWorked = int.Parse(tokens[++i]);

                IRepair repair = new Repair(partName, hoursWorked);
                engineer.AddRepair(repair);
            }

            soldier = engineer;
            break;

        case "Commando":
            string commandoCorps = tokens[5];
            var    commando      = new Commando(id, firstName, lastName, salary, commandoCorps);

            for (int i = 6; i < tokens.Length; i++)
            {
                string codeName = tokens[i];
                string state    = tokens[++i];

                try
                {
                    IMission mission = new Mission(codeName, state);
                    commando.AddMission(mission);
                }
                catch { }
            }

            soldier = commando;
            break;

        case "Spy":
            int codeNumber = (int)salary;
            soldier = new Spy(id, firstName, lastName, codeNumber);
            break;

        default:
            throw new ArgumentException("Invalid soldier type!");
        }

        return(soldier);
    }