static void Main(string[] args) { List <ISoldier> allSoldiers = new List <ISoldier>(); HashSet <Private> privates = new HashSet <Private>(); //string[] input = Console.ReadLine().Split(); //while (input[0] != "End") //{ // switch (input[0]) // { // case "Private": // Private priv = new Private(int.Parse(input[1]), input[2], input[3], decimal.Parse(input[4])); // allSoldiers.Add(priv); // privates.Add(priv); // break; // case "LeutenantGeneral": // LieutenantGeneral lieutenantGeneral = new LieutenantGeneral // (int.Parse(input[1]), input[2], input[3], decimal.Parse(input[4])); // input = input.Skip(5).ToArray(); // for (int i = 0; i < input.Length; i++) // { // Private privateToAdd = privates.First(p => p.Id == int.Parse(input[i])); // lieutenantGeneral.Privates.Add(privateToAdd); // } // allSoldiers.Add(lieutenantGeneral); // break; // case "Engineer": // Engineer engineer = new Engineer(int.Parse(input[1]), input[2], input[3], decimal.Parse(input[4]), input[5]); // if (engineer.Corps == "Airforces" || engineer.Corps == "Marines") // { // input = input.Skip(6).ToArray(); // for (int i = 0; i < input.Length; i += 2) // { // Repair repair = new Repair(input[i], int.Parse(input[i + 1])); // engineer.Repairs.Add(repair); // } // allSoldiers.Add(engineer); // } // break; // case "Commando": // Commando commando = new Commando(int.Parse(input[1]), input[2], input[3], decimal.Parse(input[4]), input[5]); // if (commando.Corps == "Airforces" || commando.Corps == "Marines") // { // input = input.Skip(6).ToArray(); // for (int i = 0; i < input.Length; i++) // { // Mission mission = new Mission(input[i], input[i + 1]); // if (mission.State == "inProgress" || mission.State == "Finished") // { // commando.Missions.Add(mission); // } // } // allSoldiers.Add(commando); // } // break; // case "Spy": // Spy spy = new Spy(int.Parse(input[1]), input[2], input[3], int.Parse(input[4])); // allSoldiers.Add(spy); // break; // } // input = Console.ReadLine().Split(); //} //foreach (var soldier in allSoldiers) //{ // Console.WriteLine(soldier.ToString()); //} while (true) { string[] data = Console.ReadLine().Split(); string soldierType = data[0]; data = data.Skip(1).ToArray(); if (soldierType == "End") { break; } switch (soldierType) { case "Private": Private priv = new Private(int.Parse(data[0]), data[1], data[2], decimal.Parse(data[3])); allSoldiers.Add(priv); privates.Add(priv); break; case "LieutenantGeneral": LieutenantGeneral lieutenant = new LieutenantGeneral(int.Parse(data[0]), data[1], data[2], decimal.Parse(data[3])); data = data.Skip(4).ToArray(); for (int i = 0; i < data.Length; i++) { Private privToAdd = privates.First(p => p.Id == int.Parse(data[i])); lieutenant.Privates.Add(privToAdd); } allSoldiers.Add(lieutenant); break; case "Engineer": Engineer engineer = new Engineer(int.Parse(data[0]), data[1], data[2], decimal.Parse(data[3]), data[4]); if (engineer.Corps == "Airforces" || engineer.Corps == "Marines") { data = data.Skip(5).ToArray(); for (int i = 0; i < data.Length; i += 2) { Repair repair = new Repair(data[i], int.Parse(data[i + 1])); engineer.Repairs.Add(repair); } allSoldiers.Add(engineer); } break; case "Commando": Commando commando = new Commando(int.Parse(data[0]), data[1], data[2], decimal.Parse(data[3]), data[4]); if (commando.Corps == "Airforces" || commando.Corps == "Marines") { data = data.Skip(5).ToArray(); for (int i = 0; i < data.Length; i += 2) { Mission mission = new Mission(data[i], data[i + 1]); if (mission.State == "Finished" || mission.State == "inProgress") { commando.Missions.Add(mission); } } allSoldiers.Add(commando); } break; case "Spy": Spy spy = new Spy(int.Parse(data[0]), data[1], data[2], int.Parse(data[3])); allSoldiers.Add(spy); break; } GC.Collect(); } foreach (var soldier in allSoldiers) { Console.WriteLine(soldier.ToString()); } }
static void Main(string[] args) { Dictionary <string, ISoldier> soldiers = new Dictionary <string, ISoldier>(); while (true) { string line = Console.ReadLine(); if (line == "End") { break; } string[] parts = line.Split(); string type = parts[0]; string id = parts[1]; string firstName = parts[2]; string lastName = parts[3]; if (type == nameof(Private)) { decimal salary = decimal.Parse(parts[4]); soldiers[id] = new Private(id, firstName, lastName, salary); } else if (type == nameof(LieutenantGeneral)) { decimal salary = decimal.Parse(parts[4]); ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary); for (int i = 5; i < parts.Length; i++) { string privateId = parts[i]; if (!soldiers.ContainsKey(privateId)) { continue; } lieutenantGeneral.AddPrivate((IPrivate)soldiers[privateId]); } soldiers[id] = lieutenantGeneral; } else if (type == nameof(Engineer)) { decimal salary = decimal.Parse(parts[4]); bool IsCorpsValid = Enum.TryParse(parts[5], out Corps corps); if (!IsCorpsValid) { continue; } IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps); for (int i = 6; i < parts.Length; i += 2) { string part = parts[i]; int hoursWorked = int.Parse(parts[i + 1]); IRepair repair = new Repair(part, hoursWorked); engineer.AddRepair(repair); } soldiers[id] = engineer; } else if (type == nameof(Commando)) { decimal salary = decimal.Parse(parts[4]); bool IsCorpsValid = Enum.TryParse(parts[5], out Corps corps); if (!IsCorpsValid) { continue; } ICommando commando = new Commando(id, firstName, lastName, salary, corps); for (int i = 6; i < parts.Length; i += 2) { string codeName = parts[i]; string state = parts[i + 1]; bool IsMissionValid = Enum.TryParse(state, out MissionState missionState); if (!IsMissionValid) { continue; } IMission mission = new Mission(codeName, missionState); commando.AddMission(mission); } soldiers[id] = commando; } else if (type == nameof(Spy)) { int codeNumber = int.Parse(parts[4]); ISpy spy = new Spy(id, firstName, lastName, codeNumber); soldiers[id] = spy; } } foreach (var soldier in soldiers.Values) { Console.WriteLine(soldier); } }
private string Parse(List <string> input) { var soldierType = input[0]; var soldierId = int.Parse(input[1]); var firstName = input[2]; var lastName = input[3]; ISoldier soldier = null; if (soldierType == "Private") { var salary = decimal.Parse(input[4]); soldier = new Private(soldierId, firstName, lastName, salary); } else if (soldierType == "LieutenantGeneral") { var salary = decimal.Parse(input[4]); var listOfPrivates = new List <IPrivate>(); for (int i = 5; i < input.Count; i++) { IPrivate currentPrivate = (IPrivate)soldiers[int.Parse(input[i])]; listOfPrivates.Add(currentPrivate); } soldier = new LieutenantGeneral(soldierId, firstName, lastName, salary, listOfPrivates); } else if (soldierType == "Engineer") { var salary = decimal.Parse(input[4]); var isCorps = Enum.TryParse <Corps>(input[5], out Corps corps); if (!isCorps) { throw new Exception(); } var repairs = new List <IRepair>(); for (int i = 6; i < input.Count; i += 2) { var repairPart = input[i]; var repairHours = int.Parse(input[i + 1]); var repair = new Repair(repairPart, repairHours); repairs.Add(repair); } soldier = new Engineer(soldierId, firstName, lastName, salary, corps, repairs); } else if (soldierType == "Commando") { var salary = decimal.Parse(input[4]); var isCorps = Enum.TryParse <Corps>(input[5], out Corps corps); if (!isCorps) { throw new Exception(); } var missions = new List <IMission>(); for (int i = 6; i < input.Count; i += 2) { var missionName = input[i]; var state = input[i + 1]; var isState = Enum.TryParse <State>(state, out State finalState); if (!isState) { continue; } var mission = new Mission(missionName, finalState); missions.Add(mission); } soldier = new Commando(soldierId, firstName, lastName, salary, corps, missions); } else if (soldierType == "Spy") { var codeNumber = int.Parse(input[4]); soldier = new Spy(soldierId, firstName, lastName, codeNumber); } soldiers.Add(soldierId, soldier); return(soldier.ToString()); }
public static void Main() { List <Soldier> soldiers = new List <Soldier>(); while (true) { string[] soldierInfo = Console.ReadLine().Split(); if (soldierInfo[0] == "End") { break; } int id = int.Parse(soldierInfo[1]); string firstName = soldierInfo[2]; string lastName = soldierInfo[3]; switch (soldierInfo[0]) { case "Private": decimal salary = decimal.Parse(soldierInfo[4]); var @private = new Private(id, firstName, lastName, salary); soldiers.Add(@private); break; case "LieutenantGeneral": salary = decimal.Parse(soldierInfo[4]); var ids = soldierInfo.Skip(5).Select(int.Parse); List <Private> privates = new List <Private>(); foreach (var privateId in ids) { var soldier = soldiers.FirstOrDefault(s => s.Id == privateId); if (soldier != null) { privates.Add(soldier as Private); } } var general = new LieutenantGeneral(id, firstName, lastName, salary, privates); soldiers.Add(general); break; case "Engineer": salary = decimal.Parse(soldierInfo[4]); string corps = soldierInfo[5]; var repairs = new List <Repair>(); for (int i = 6; i < soldierInfo.Length; i += 2) { string partName = soldierInfo[i]; int hoursWorked = int.Parse(soldierInfo[i + 1]); var repair = new Repair(partName, hoursWorked); repairs.Add(repair); } try { var engineer = new Engineer(id, firstName, lastName, salary, corps, repairs); soldiers.Add(engineer); } catch (ArgumentException) { continue; } break; case "Commando": salary = decimal.Parse(soldierInfo[4]); corps = soldierInfo[5]; var missions = new List <Mission>(); for (int i = 6; i < soldierInfo.Length; i += 2) { string codeName = soldierInfo[i]; string state = soldierInfo[i + 1]; try { var mission = new Mission(codeName, state); missions.Add(mission); } catch (ArgumentException) { continue; } } try { var commando = new Commando(id, firstName, lastName, salary, corps, missions); soldiers.Add(commando); } catch (ArgumentException) { continue; } break; case "Spy": int codeNumber = int.Parse(soldierInfo[4]); var spy = new Spy(id, firstName, lastName, codeNumber); soldiers.Add(spy); break; } } //soldiers.ForEach(Console.WriteLine); foreach (var soldier in soldiers) { Console.WriteLine(soldier); } }
static void Main(string[] args) { ISoldier soldier = null; ICollection <ISoldier> soldiers = new List <ISoldier>(); string input = Console.ReadLine(); while (input != "End") { string[] token = input.Split(); switch (token[0]) { case "Private": soldier = new Private(int.Parse(token[1]), token[2], token[3], decimal.Parse(token[4])); soldiers.Add(soldier); break; case "LieutenantGeneral": LieutenantGeneral lieutenantGeneral = new LieutenantGeneral(int.Parse(token[1]), token[2], token[3], decimal.Parse(token[4])); for (int i = 5; i < token.Length; i++) { if (soldiers.FirstOrDefault(s => s.Id == int.Parse(token[i])) is IPrivate @private) { lieutenantGeneral.AddPrivate(@private); } } soldier = lieutenantGeneral as ILieutenantGeneral; soldiers.Add(soldier); break; case "Engineer": IEngineer engineer; try { engineer = new Engineer(int.Parse(token[1]), token[2], token[3], decimal.Parse(token[4]), token[5]); soldier = engineer as IEngineer; for (int i = 6; i < token.Length - 1; i += 2) { IRepair repair = new Repair(token[i], int.Parse(token[i + 1])) as IRepair; engineer.AddRepair(repair); } soldiers.Add(soldier); } catch (ArgumentException) { //Console.WriteLine(e.Message); //throw; } break; case "Commando": try { ICommando commando = new Commando(int.Parse(token[1]), token[2], token[3], decimal.Parse(token[4]), token[5]); soldier = commando as ISoldier; for (int i = 6; i < token.Length - 1; i += 2) { IMission mission = new Mission(token[i], token[i + 1]) as IMission; if (mission.State == "inProgress" || mission.State == "Finished") { commando.AddMission(mission); } } soldiers.Add(soldier); } catch (System.ArgumentException) { //throw; } break; case "Spy": ISpy spy = new Spy(int.Parse(token[1]), token[2], token[3], int.Parse(token[4].ToLower())); soldier = spy as ISoldier; soldiers.Add(soldier); break; default: break; } input = Console.ReadLine(); } foreach (var @item in soldiers) { Console.WriteLine(@item); } }
public static void Main() { Dictionary <string, ISoldier> soldiersById = new Dictionary <string, ISoldier>(); while (true) { string line = Console.ReadLine(); if (line == "End") { break; } string[] parts = line.Split(); string type = parts[0]; string id = parts[1]; string firstName = parts[2]; string lastName = parts[3]; //• Private: "Private <id> <firstName> <lastName> <salary>" if (type == nameof(Private)) { decimal salary = decimal.Parse(parts[4]); soldiersById[id] = new Private(id, firstName, lastName, salary); } //• LeutenantGeneral: "LieutenantGeneral <id> <firstName> <lastName> <salary> //<private1Id> <private2Id> … <privateNId>" where privateXId will always be an Id of a Private already received through the input. else if (type == nameof(LieutenantGeneral)) { decimal salary = decimal.Parse(parts[4]); ILieutenantGeneral leutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary); for (int i = 5; i < parts.Length; i++) { string privateId = parts[i]; if (!soldiersById.ContainsKey(privateId)) { continue; } leutenantGeneral.AddPrivate((IPrivate)soldiersById[privateId]); // иска IPrivate и го кастваме } soldiersById[id] = leutenantGeneral; } //• Engineer: "Engineer <id> <firstName> <lastName> <salary> <corps> <repair1Part> <repair1Hours> … <repairNPart> <repairNHours>" where repairXPart is the name of a repaired part and repairXHours the hours it took to repair it(the two parameters will always come paired). else if (type == nameof(Engineer)) { decimal salary = decimal.Parse(parts[4]); bool isCorpsValid = Enum.TryParse(parts[5], out Corps corps); // после ползваме директно corps v инит на Енгинера if (!isCorpsValid) { continue; } IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps); // corps go vzema ot enum 3 reda po nagore for (int i = 6; i < parts.Length; i += 2) { string repairPart = parts[i]; int hoursWorked = int.Parse(parts[i + 1]); IRepair repair = new Repair(repairPart, hoursWorked); engineer.AddRepair(repair); } soldiersById[id] = engineer; } //• Commando: "Commando <id> <firstName> <lastName> <salary> <corps> //<mission1CodeName> <mission1state> … <missionNCodeName> <missionNstate>" a missions code name, description and state will always come together. else if (type == nameof(Commando)) { decimal salary = decimal.Parse(parts[4]); bool isCorpsValid = Enum.TryParse(parts[5], out Corps corps); if (!isCorpsValid) { continue; } ICommando commando = new Commando(id, firstName, lastName, salary, corps); for (int i = 6; i < parts.Length; i += 2) { string missionCodeName = parts[i]; string missionState = parts[i + 1]; bool isMissIonStateIsValid = Enum.TryParse(missionState, out MissionState missState); if (!isMissIonStateIsValid) { continue; } IMission mission = new Mission(missionCodeName, missState); commando.AddMission(mission); } soldiersById[id] = commando; } //• Spy: "Spy <id> <firstName> <lastName> <codeNumber>" else if (type == nameof(Spy)) { int codeNumber = int.Parse(parts[4]); ISpy spy = new Spy(id, firstName, lastName, codeNumber); soldiersById[id] = spy; } } foreach (var soldier in soldiersById.Values) { Console.WriteLine(soldier); } }
public void Run() { Dictionary <int, ISoldier> soldiers = new Dictionary <int, ISoldier>(); string line = Console.ReadLine(); while (line != "End") { var tokens = line.Split(" ", StringSplitOptions.RemoveEmptyEntries); var type = tokens[0]; var id = tokens[1]; var firstName = tokens[2]; var lastName = tokens[3]; var salary = 0m; Corps corp; switch (type) { case "Private": salary = decimal.Parse(tokens[4]); var privateSoldier = new Private(id, firstName, lastName, salary); soldiers.Add(int.Parse(id), privateSoldier); break; case "LieutenantGeneral": salary = decimal.Parse(tokens[4]); List <ISoldier> privates = new List <ISoldier>(); for (int i = 5; i < tokens.Length; i++) { var privateId = tokens[i]; privates.Add(soldiers[int.Parse(privateId)]); } var lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary, privates); soldiers.Add(int.Parse(id), lieutenantGeneral); break; case "Engineer": salary = decimal.Parse(tokens[4]); if (!Enum.TryParse(tokens[5], out corp)) { continue; } List <IRepair> repairs = new List <IRepair>(); for (int i = 6; i < tokens.Length; i += 2) { var partName = tokens[i]; var hoursWorked = int.Parse(tokens[i + 1]); try { var repair = new Repair(partName, hoursWorked); repairs.Add(repair); } catch (ArgumentException) { } } try { var engineer = new Engineer(id, firstName, lastName, salary, corp.ToString(), repairs); soldiers.Add(int.Parse(id), engineer); } catch (ArgumentException) { } break; case "Commando": salary = decimal.Parse(tokens[4]); if (!Enum.TryParse(tokens[5], out corp)) { continue; } List <IMission> missions = new List <IMission>(); for (int i = 6; i < tokens.Length; i += 2) { var codeName = tokens[i]; MissionStatus state; if (!Enum.TryParse(tokens[i + 1], out state)) { continue; } try { var mission = new Mission(codeName, state.ToString()); missions.Add(mission); } catch (ArgumentException) { } } try { var commando = new Commando(id, firstName, lastName, salary, corp.ToString(), missions); soldiers.Add(int.Parse(id), commando); } catch (ArgumentException) { } break; case "Spy": var codeNumber = int.Parse(tokens[4]); var spy = new Spy(id, firstName, lastName, codeNumber); soldiers.Add(int.Parse(id), spy); break; } line = Console.ReadLine(); } foreach (var soldier in soldiers.Values) { Console.WriteLine(soldier); } }
public void AddMission(Mission missions) { Missions.Add(missions.CodeName, missions); }
public static void Main() { var privates = new Dictionary <int, Private>(); string input; while ((input = Console.ReadLine()) != "End") { var cmdArgs = input.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries); var soldierType = cmdArgs[0]; int id; string firstName; string lastName; double salary; Corps corps; switch (soldierType) { case "Private": id = int.Parse(cmdArgs[1]); firstName = cmdArgs[2]; lastName = cmdArgs[3]; salary = double.Parse(cmdArgs[4]); var privateSoldier = new Private(id, firstName, lastName, salary); privates.Add(id, privateSoldier); Console.WriteLine(privateSoldier); break; case "LieutenantGeneral": id = int.Parse(cmdArgs[1]); firstName = cmdArgs[2]; lastName = cmdArgs[3]; salary = double.Parse(cmdArgs[4]); var leutenantGeneral = new LeutenantGeneral(id, firstName, lastName, salary); if (cmdArgs.Length >= 5) { for (var i = 5; i < cmdArgs.Length; i++) { var privateId = int.Parse(cmdArgs[i]); privateSoldier = privates[privateId]; leutenantGeneral.Privates.Add(privateSoldier); } } Console.WriteLine(leutenantGeneral); break; case "Engineer": id = int.Parse(cmdArgs[1]); firstName = cmdArgs[2]; lastName = cmdArgs[3]; salary = double.Parse(cmdArgs[4]); if (Enum.TryParse(cmdArgs[5], out corps)) { var engineer = new Engineer(id, firstName, lastName, salary, corps); if (cmdArgs.Length >= 6) { for (var i = 6; i < cmdArgs.Length; i += 2) { var repairPartName = cmdArgs[i]; var repairHours = int.Parse(cmdArgs[i + 1]); var repair = new Repair(repairPartName, repairHours); engineer.Repairs.Add(repair); } } Console.WriteLine(engineer); } break; case "Commando": id = int.Parse(cmdArgs[1]); firstName = cmdArgs[2]; lastName = cmdArgs[3]; salary = double.Parse(cmdArgs[4]); if (Enum.TryParse(cmdArgs[5], out corps)) { var commando = new Commando(id, firstName, lastName, salary, corps); if (cmdArgs.Length >= 6) { for (var i = 6; i < cmdArgs.Length; i += 2) { if (Enum.TryParse(cmdArgs[i + 1], out MissionState missionState)) { var missionName = cmdArgs[i]; var mission = new Mission(missionName, missionState); commando.Missions.Add(mission); } } Console.WriteLine(commando); } } break; case "Spy": id = int.Parse(cmdArgs[1]); firstName = cmdArgs[2]; lastName = cmdArgs[3]; var codeNumber = int.Parse(cmdArgs[4]); var spy = new Spy(id, firstName, lastName, codeNumber); Console.WriteLine(spy); break; default: throw new ArgumentException("Invalid Type of Soldier!"); } } }
static void Main(string[] args) { Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture("en-GB"); Dictionary <string, ISoldier> soldiersByID = new Dictionary <string, ISoldier>(); string command; while ((command = Console.ReadLine()) != "End") { string[] commandArgs = command.Split(); string soldierType = commandArgs[0]; string id = commandArgs[1]; string firstName = commandArgs[2]; string lastName = commandArgs[3]; if (soldierType == typeof(Private).Name) { decimal salary = decimal.Parse(commandArgs[4]); soldiersByID[id] = new Private(id, firstName, lastName, salary); } else if (soldierType == typeof(LieutenantGeneral).Name) { decimal salary = decimal.Parse(commandArgs[4]); ILieutenantGeneral lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary); for (int i = 5; i < commandArgs.Length; i++) { string privateId = commandArgs[i]; lieutenantGeneral.AddPrivate((IPrivate)soldiersByID[privateId]); } soldiersByID[id] = lieutenantGeneral; } else if (soldierType == typeof(Engineer).Name) { //• Engineer: // Name: < firstName > < lastName > Id: < id > Salary: < salary > Corps: < corps >Repairs: // < repair1 ToString() > // < repair2 ToString() > //< repairN ToString() > decimal salary = decimal.Parse(commandArgs[4]); bool isCorpsValid = Enum.TryParse(commandArgs[5], out SoldierCorpEnum corps); if (!isCorpsValid) { continue; } IEngineer engineer = new Engineer(id, firstName, lastName, salary, corps); for (int i = 6; i < commandArgs.Length; i += 2) { string part = commandArgs[i]; int hoursWorked = int.Parse(commandArgs[i + 1]); IRepair repair = new Repair(part, hoursWorked); engineer.AddRepair(repair); } soldiersByID[id] = engineer; } else if (soldierType == typeof(Commando).Name) { decimal salary = decimal.Parse(commandArgs[4]); bool isCorpsValid = Enum.TryParse(commandArgs[5], out SoldierCorpEnum corps); if (!isCorpsValid) { continue; } ICommando commando = new Commando(id, firstName, lastName, salary, corps); for (int i = 6; i < commandArgs.Length; i += 2) { string codeName = commandArgs[i]; string state = commandArgs[i + 1]; bool isMissionValid = Enum.TryParse(state, out MissionStateEnum missionState); if (!isMissionValid) { continue; } IMission mission = new Mission(codeName, missionState); commando.AddMision(mission); } soldiersByID[id] = commando; } else if (soldierType == typeof(Spy).Name) { // • Spy: //Name: < firstName > < lastName > Id: < id > //Code Number: < codeNumber > int codeNumber = int.Parse(commandArgs[4]); ISpy spy = new Spy(id, firstName, lastName, codeNumber); soldiersByID[id] = spy; } } foreach (var soldierr in soldiersByID.Values) { Console.WriteLine(soldierr); } }
static void Main(string[] args) { var soldiers = new Dictionary <int, ISoldier>(); var input = string.Empty; while ((input = Console.ReadLine()) != "End") { var inputArgs = input.Split(); var type = inputArgs[0]; var id = int.Parse(inputArgs[1]); var firstName = inputArgs[2]; var lastName = inputArgs[3]; if (type == "Spy") { var codeNumber = int.Parse(inputArgs[4]); var spy = new Spy(id, firstName, lastName, codeNumber); soldiers.Add(id, spy); } else { var salary = decimal.Parse(inputArgs[4]); switch (type) { case "Private": { var privateSolider = new Private(id, firstName, lastName, salary); soldiers.Add(id, privateSolider); break; } case "LieutenantGeneral": { var idNums = inputArgs.Skip(5) .Select(int.Parse) .ToArray(); IList <IPrivate> privates = idNums.Select(idInt => (IPrivate)soldiers[idInt]).ToList(); var lieutenantGeneral = new LieutenantGeneral(id, firstName, lastName, salary, privates); soldiers.Add(id, lieutenantGeneral); break; } default: { var crops = inputArgs[5]; if (crops == "Airforces" || crops == "Marines") { switch (type) { case "Engineer": { ICollection <IRepair> repairs = new List <IRepair>(); for (var i = 6; i < inputArgs.Length; i += 2) { var name = inputArgs[i]; var hours = int.Parse(inputArgs[i + 1]); var repair = new Repair(name, hours); repairs.Add(repair); } var engineer = new Engineer(id, firstName, lastName, salary, crops, repairs); soldiers.Add(id, engineer); break; } case "Commando": { ICollection <IMission> missions = new List <IMission>(); for (var i = 6; i < inputArgs.Length; i += 2) { var name = inputArgs[i]; var state = inputArgs[i + 1]; if (state == "inProgress" || state == "Finished") { var mission = new Mission(name, state); missions.Add(mission); } } var commando = new Commando(id, firstName, lastName, salary, crops, missions); soldiers.Add(id, commando); break; } } } break; } } } } foreach (var soldier in soldiers) { Console.WriteLine(soldier.Value); } }
static void Main(string[] args) { var input = Console.ReadLine().Split(" ").ToArray(); List <Soldier> soldiers = new List <Soldier>(); List <Private> privates = new List <Private>(); while (input[0] != "End") { switch (input[0]) { case "Private": { int id = int.Parse(input[1]); string firstName = input[2]; string lastName = input[3]; double salary = double.Parse(input[4]); Private soldier = new Private(id, firstName, lastName, salary); soldiers.Add(soldier); privates.Add(soldier); break; } case "Commando": { int id = int.Parse(input[1]); string firstName = input[2]; string lastName = input[3]; double salary = double.Parse(input[4]); string cops = input[5]; if (cops == "Airforces" || cops == "Marines") { Commando soldier = new Commando(id, firstName, lastName, salary, cops); for (int i = 6; i < input.Length; i += 2) { if (input[i + 1] == "inProgress" || input[i + 1] == "finished") { Mission mission = new Mission(input[i], input[i + 1]); soldier.Missions.Add(mission); } } soldiers.Add(soldier); } break; } case "Spy": { int id = int.Parse(input[1]); string firstName = input[2]; string lastName = input[3]; int codeNumber = int.Parse(input[4]); Spy spy = new Spy(id, firstName, lastName, codeNumber); soldiers.Add(spy); break; } case "LieutenantGeneral": { int id = int.Parse(input[1]); string firstName = input[2]; string lastName = input[3]; double salary = double.Parse(input[4]); LeutenantGeneral soldier = new LeutenantGeneral(id, firstName, lastName, salary); for (int i = 5; i < input.Length; i++) { Private solderToAdd = privates.FirstOrDefault(s => s.Id == int.Parse(input[i])); soldier.Privates.Add(solderToAdd); } soldiers.Add(soldier); break; } case "Engineer": { int id = int.Parse(input[1]); string firstName = input[2]; string lastName = input[3]; double salary = double.Parse(input[4]); string cops = input[5]; Engineer soldier = new Engineer(id, firstName, lastName, salary, cops); for (int i = 6; i < input.Length; i += 2) { Repear repear = new Repear(input[i], int.Parse(input[i + 1])); soldier.Repears.Add(repear); } soldiers.Add(soldier); break; } } input = Console.ReadLine().Split(" ").ToArray(); } foreach (var soldier in soldiers) { Console.WriteLine(soldier.ToString()); } }
public void CompleteMission(Mission mission) { mission.State = "Finished"; }
static void Main(string[] args) { var soldiers = new Dictionary <int, ISoldier>(); while (true) { string[] input = Console.ReadLine().Split(); if (input[0] == "End") { break; } int id = int.Parse(input[1]); string firstName = input[2]; string lastName = input[3]; if (input[0] == "Private") { decimal salary = decimal.Parse(input[4]); soldiers.Add(id, new Private(id, firstName, lastName, salary)); } else if (input[0] == "LieutenantGeneral") { decimal salary = decimal.Parse(input[4]); var general = new LieutenantGeneral(id, firstName, lastName, salary); for (int i = 5; i < input.Length; i++) { Private @private = (Private)soldiers[int.Parse(input[i])]; general.AddPrivate(@private); } soldiers.Add(id, general); } else if (input[0] == "Commando") { decimal salary = decimal.Parse(input[4]); string corps = input[5]; if (corps != "Airforces" && corps != "Marines") { continue; } var commando = new Commando(id, firstName, lastName, salary, corps); for (int i = 6; i < input.Length; i += 2) { var mission = new Mission(input[i], input[i + 1]); commando.AddMission(mission); } soldiers.Add(id, commando); } else if (input[0] == "Engineer") { decimal salary = decimal.Parse(input[4]); string corps = input[5]; if (corps != "Airforces" && corps != "Marines") { continue; } var engineer = new Engineer(id, firstName, lastName, salary, corps); for (int i = 6; i < input.Length; i += 2) { var repair = new Repair(input[i], int.Parse(input[i + 1])); engineer.AddRepair(repair); } soldiers.Add(id, engineer); } else if (input[0] == "Spy") { int codeNumber = int.Parse(input[4]); soldiers.Add(id, new Spy(id, firstName, lastName, codeNumber)); } } foreach (var soldier in soldiers) { Console.WriteLine(soldier.Value); } }
static void Main(string[] args) { var soldiers = new List <ISoldier>(); string input; while ((input = Console.ReadLine()) != "End") { var tokens = input .Split(' ', StringSplitOptions.RemoveEmptyEntries); var soldireType = tokens[0]; var id = int.Parse(tokens[1]); var firstName = tokens[2]; var lastName = tokens[3]; var sallary = double.Parse(tokens[4]); ISoldier soldier = null; try { switch (soldireType) { case "Private": soldier = new Private(id, firstName, lastName, sallary); break; case "LeutenantGeneral": var lueitenant = new LeutenantGeneral(id, firstName, lastName, sallary); for (int i = 5; i < tokens.Length; i++) { var privateId = int.Parse(tokens[i]); ISoldier @private = soldiers.FirstOrDefault(p => p.Id == privateId); lueitenant.AddPrivate(@private); } soldier = lueitenant; break; case "Engineer": var engineerCorps = tokens[5]; var engineer = new Engineer(id, firstName, lastName, sallary, engineerCorps); for (int i = 6; i < tokens.Length; i++) { var partName = tokens[i]; var hoursWorked = int.Parse(tokens[++i]); IRepair repair = new Repair(partName, hoursWorked); engineer.AddRepair(repair); } soldier = engineer; break; case "Commando": var commandoCorps = tokens[5]; var commando = new Commando(id, firstName, lastName, sallary, commandoCorps); for (int i = 6; i < tokens.Length; i++) { var codeName = tokens[i]; var missionState = tokens[++i]; try { IMission mission = new Mission(codeName, missionState); commando.AddMission(mission); } catch { } } soldier = commando; break; case "Spy": int codeNumber = (int)sallary; soldier = new Spy(id, firstName, lastName, codeNumber); break; default: throw new ArgumentException("Invalid soldier type!"); } soldiers.Add(soldier); } catch { } } foreach (var s in soldiers) { Console.WriteLine(s); } }
static void Main(string[] args) { string[] line = Console.ReadLine().Split(); var dictOfPrivates = new Dictionary <int, Private>(); var soldiers = new List <ISoldier>(); while (line[0] != "End") { if (line[0] == "Private") { var @private = new Private(int.Parse(line[1]), line[2], line[3], double.Parse(line[4])); dictOfPrivates.Add(int.Parse(line[1]), @private); soldiers.Add(@private); } else if (line[0] == "LeutenantGeneral") { var leutenantGeneral = new LeutenantGeneral(int.Parse(line[1]), line[2], line[3], double.Parse(line[4])); leutenantGeneral.Privates = new List <Private>(); for (int i = 5; i < line.Length; i++) { leutenantGeneral.Privates.Add(dictOfPrivates[int.Parse(line[i])]); } soldiers.Add(leutenantGeneral); } else if (line[0] == "Engineer") { var engineer = new Engineer(int.Parse(line[1]), line[2], line[3], double.Parse(line[4]), line[5]); for (int i = 6; i < line.Length; i += 2) { var repair = new Repair(int.Parse(line[i]), line[i + 1]); engineer.Repairs.Add(repair); } soldiers.Add(engineer); } else if (line[0] == "Commando") { var commando = new Commando(int.Parse(line[1]), line[2], line[3], double.Parse(line[4]), line[5]); commando.Missions = new List <Mission>(); for (int i = 6; i < line.Length; i += 2) { var mission = new Mission(line[i], line[i + 1]); commando.Missions.Add(mission); } soldiers.Add(commando); } else if (line[0] == "Spy") { var spy = new Spy(int.Parse(line[1]), line[2], line[3], double.Parse(line[4]), int.Parse(line[5])); soldiers.Add(spy); } line = Console.ReadLine().Split(); } foreach (var soldier in soldiers) { Console.WriteLine(soldier); } }
static void Main(string[] args) { var soldiers = new List <ISoldier>(); string input; while ((input = Console.ReadLine()) != "End") { try { var soldierInput = input.Split(); var id = int.Parse(soldierInput[1]); var firstName = soldierInput[2]; var lastName = soldierInput[3]; var sodierType = soldierInput[0]; var salary = decimal.Parse(soldierInput[4]); ISoldier sodier = null; switch (sodierType) { case "Private": sodier = new Private(id, firstName, lastName, salary); ; break; case "Spy": sodier = new Spy(id, firstName, lastName, int.Parse(soldierInput[4])); break; case "LeutenantGeneral": var general = new LeutenantGeneral(id, firstName, lastName, salary); for (int i = 5; i < soldierInput.Length; i++) { int iid = int.Parse(soldierInput[i]); ISoldier bbSoldier = soldiers.First(x => x.Id == iid); general.AddPrivate(bbSoldier); } sodier = general; break; case "Engineer": var eng = new Engineer(id, firstName, lastName, salary, soldierInput[5]); for (int i = 6; i < soldierInput.Length; i++) { try { string partName = soldierInput[i]; int hourWorked = int.Parse(soldierInput[++i]); IRepair repeir = new Repair(partName, hourWorked); eng.AddRepiar(repeir); } catch { } } sodier = eng; break; case "Commando": var commando = new Commando(id, firstName, lastName, salary, soldierInput[5]); for (int i = 6; i < soldierInput.Length; i++) { try { string codeName = soldierInput[i]; string state = soldierInput[++i]; IMission mission = new Mission(codeName, state); commando.AddMision(mission); } catch { } } sodier = commando; break; default: throw new ArgumentException(); } soldiers.Add(sodier); } catch { } } foreach (var soldier in soldiers) { Console.WriteLine(soldier); } }
public static void Main() { List <ISoldier> soldiers = new List <ISoldier>(); while (true) { string cmd = Console.ReadLine(); if (cmd == "End") { break; } string[] cmdArgs = cmd.Split(' ', StringSplitOptions.RemoveEmptyEntries); switch (cmdArgs[0]) { case "Private": var @private = new Private(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4])); soldiers.Add(@private); break; case "LieutenantGeneral": var ltGeneral = new LieutenantGeneral(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4])); for (int i = 5; i < cmdArgs.Length; i++) { int privateId = int.Parse(cmdArgs[i]); ltGeneral.AddPrivate((Private)soldiers.Find(s => s.GetType().Name == "Private" && s.Id == privateId)); } soldiers.Add(ltGeneral); break; case "Engineer": try { var engineer = new Engineer(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4]), cmdArgs[5]); for (int i = 6; i < cmdArgs.Length; i += 2) { var repair = new Repair(cmdArgs[i], int.Parse(cmdArgs[i + 1])); engineer.AddRepair(repair); } soldiers.Add(engineer); } catch (ArgumentException) { continue; } break; case "Commando": try { var comando = new Comando(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], decimal.Parse(cmdArgs[4]), cmdArgs[5]); for (int i = 6; i < cmdArgs.Length; i += 2) { try { var mission = new Mission(cmdArgs[i], cmdArgs[i + 1]); comando.AddMission(mission); } catch (ArgumentException) { continue; } } soldiers.Add(comando); } catch (ArgumentException) { continue; } break; case "Spy": var spy = new Spy(int.Parse(cmdArgs[1]), cmdArgs[2], cmdArgs[3], int.Parse(cmdArgs[4])); soldiers.Add(spy); break; } } soldiers.ForEach(s => Console.WriteLine(s)); }
public string Read(string[] args) { string soldierType = args[0]; int id = int.Parse(args[1]); string firstName = args[2]; string lastName = args[3]; ISoldier soldier = null; if (soldierType == "Private") { decimal salary = decimal.Parse(args[4]); soldier = new Private(id, firstName, lastName, salary); } else if (soldierType == "LieutenantGeneral") { decimal salary = decimal.Parse(args[4]); var privates = new Dictionary <int, IPrivate>(); for (int i = 5; i < args.Length; i++) { int soldierId = int.Parse(args[i]); var currentSoldier = (IPrivate)soldiers[soldierId]; privates.Add(soldierId, currentSoldier); } soldier = new LieutenantGeneral(id, firstName, lastName, salary, privates); } else if (soldierType == "Engineer") { decimal salary = decimal.Parse(args[4]); bool isValidCorps = Enum.TryParse <Corps>(args[5], out Corps corps); if (!isValidCorps) { throw new Exception(); } ICollection <IRepair> repairs = new List <IRepair>(); for (int i = 6; i < args.Length; i += 2) { string currentName = args[i]; int hours = int.Parse(args[i + 1]); IRepair repair = new Repair(currentName, hours); repairs.Add(repair); } soldier = new Engineer(id, firstName, lastName, salary, corps, repairs); } else if (soldierType == "Commando") { decimal salary = decimal.Parse(args[4]); bool isValidCorps = Enum.TryParse <Corps>(args[5], out Corps corps); if (!isValidCorps) { throw new Exception(); } ICollection <IMission> missions = new List <IMission>(); for (int i = 6; i < args.Length; i += 2) { string missionName = args[i]; string missionState = args[i + 1]; bool isValidMissionState = Enum.TryParse <State>(missionState, out State stateResult); if (!isValidMissionState) { continue; } IMission mission = new Mission(missionName, stateResult); missions.Add(mission); } soldier = new Commando(id, firstName, lastName, salary, corps, missions); } else if (soldierType == "Spy") { int codeNumber = int.Parse(args[4]); soldier = new Spy(id, firstName, lastName, codeNumber); } soldiers.Add(id, soldier); return(soldier.ToString()); }