public void CategorizeByModel() { //Method to categorize droids in the order of Astromech, Janitor, Utility, Protocol GenericStack <IDroid> protocolStack = new GenericStack <IDroid>(); GenericStack <IDroid> utilityStack = new GenericStack <IDroid>(); GenericStack <IDroid> janitorStack = new GenericStack <IDroid>(); GenericStack <IDroid> astromechStack = new GenericStack <IDroid>(); foreach (IDroid droid in droidCollection) { if (droid != null) { switch (droid.GetModel()) { //Go through the droidCollection and separate the droids into stacks by Model case "PROTOCOL": protocolStack.Add(droid); break; case "UTILITY": utilityStack.Add(droid); break; case "JANITOR": janitorStack.Add(droid); break; case "ASTROMECH": astromechStack.Add(droid); break; default: break; } } } //Create the queue and add the stacks to it in the desired order GenericQueue <IDroid> droidQueue = new GenericQueue <IDroid>(); droidQueue.AddStack(astromechStack); droidQueue.AddStack(janitorStack); droidQueue.AddStack(utilityStack); droidQueue.AddStack(protocolStack); droidCollection = new IDroid[droidQueue.Depth]; for (int i = 0; i < droidQueue.Depth; i++) { droidCollection[i] = (IDroid)droidQueue.Retrieve(i + 1).Droid; } }
public void SortModel() { GenericStack <UtilityDroid> UtilityDroidStack = new GenericStack <UtilityDroid>(); GenericStack <AstromechDroid> AstromechDroidStack = new GenericStack <AstromechDroid>(); GenericStack <ProtocolDroid> ProtocolDroidStack = new GenericStack <ProtocolDroid>(); GenericStack <JanitorDroid> JanitorDroidStack = new GenericStack <JanitorDroid>(); foreach (IDroid droids in droidCollection) { if (droids is UtilityDroid) { UtilityDroidStack.Add((UtilityDroid)droids); } else if (droids is AstromechDroid) { AstromechDroidStack.Add((AstromechDroid)droids); } else if (droids is ProtocolDroid) { ProtocolDroidStack.Add((ProtocolDroid)droids); } else if (droids is JanitorDroid) { JanitorDroidStack.Add((JanitorDroid)droids); } //*****************************************************************************************************************PROBLEM***********************************************************************************************************************************8************************************************* //Error 4 Argument 1: cannot convert from 'cis237assignment4.GenericStack<cis237assignment4.UtilityDroid>' to 'cis237assignment4.IDroid' c:\users\jason\cis237\cis237assignment4\cis237assignment4\droidcollection.cs 174 23 cis237assignment4 //Error 3 The best overloaded method match for 'cis237assignment4.GenericQueue<cis237assignment4.IDroid>.Add(cis237assignment4.IDroid)' has some invalid arguments c:\users\jason\cis237\cis237assignment4\cis237assignment4\droidcollection.cs 175 13 cis237assignment4 /************************************************************************************************************************************************************************************************************************************************/ } GenericQueue <IDroid> Queue = new GenericQueue <IDroid>(); //Queue.Add(AstromechDroidStack); //Queue.Add(UtilityDroidStack); }
//method to organize droids by type public bool Organize() { GenericStack <AstromechDroid> astromechStack = new GenericStack <AstromechDroid>(); GenericStack <JanitorDroid> janitorStack = new GenericStack <JanitorDroid>(); GenericStack <UtilityDroid> utilityStack = new GenericStack <UtilityDroid>(); GenericStack <ProtocolDroid> protocolStack = new GenericStack <ProtocolDroid>(); GenericQueue <IDroid> droidQueue = new GenericQueue <IDroid>(); //Add droids to appropriate stack types for (int i = 0; i < lengthOfCollection; i++) { try { astromechStack.Add((AstromechDroid)droidCollection[i]); } catch { try { janitorStack.Add((JanitorDroid)droidCollection[i]); } catch { try { utilityStack.Add((UtilityDroid)droidCollection[i]); } catch { try { protocolStack.Add((ProtocolDroid)droidCollection[i]); } catch { return(false); } } } } } //Add droids in order to the queue while (astromechStack.Head != null) { droidQueue.Add((IDroid)astromechStack.Pop()); } while (janitorStack.Head != null) { droidQueue.Add((IDroid)janitorStack.Pop()); } while (utilityStack.Head != null) { droidQueue.Add((IDroid)utilityStack.Pop()); } while (protocolStack.Head != null) { droidQueue.Add((IDroid)protocolStack.Pop()); } //Dequeue droids back into the array for (int i = 0; droidQueue.Tail != null; i++) { droidCollection[i] = (IDroid)droidQueue.Dequeue(); } return(true); }