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); } }
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); } }
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); } }
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); }
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); }
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); }
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) { } } }
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); }
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(); } } }
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(); } }
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; } }
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); } }
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(); } }
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); }
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); } }
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); } }
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); } }
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); }