/// <summary> /// Initialize and return multiQ object /// </summary> /// <returns></returns> public static multiQ InitMultiQObject() { Console.WriteLine("----------------------------------------------------"); Console.WriteLine("Initialize MultiQ object."); multiQ mObj = new multiQ(); return(mObj); }
/// <summary> /// Pop Factor objects from MultiQ /// </summary> /// <param name="obj">multiQ object</param> public static void PopFactorObjectFromMultiQ(multiQ obj) { Console.WriteLine("\n"); Console.WriteLine(" Begin pop Factor objects from MutliQ."); while (obj.PopFactorObject()) { Console.WriteLine(" Factor object popped."); } Console.WriteLine(" End pop Factor objects from MutliQ."); }
/// <summary> /// Push Factor objects to multiQ class /// </summary> /// <param name="qObj">initialized mutliQ object</param> /// <param name="arrFactorObj">array contains Factor objects</param> /// <param name="factors">array contains factor values</param> public static void PushFactorObjectsToMultiQ(multiQ qObj, factor[] arrFactorObj, int[] factors) { Console.WriteLine(" Begin push Factor objects to MultiQ."); for (int i = 0; i < ARR_SIZE; i++) { qObj.PushFactorObj(arrFactorObj[i]); } string strFactorValues = ConvertArrayToString(factors); Console.WriteLine(" Factor values: {0}", strFactorValues); Console.WriteLine(" End push Factor objects to MultiQ."); }
/// <summary> /// Create, intialize and return factor object array /// </summary> /// <param name="rand">intialize random object</param> /// <param name="obj">initialized mutliQ object</param> /// <param name="factors">int array to hold factor values</param> /// <returns></returns> public static factor[] InitFactorObject(Random rand, multiQ obj, int[] factors) { Console.WriteLine("Initialize Factor objects."); factor[] fObj = new factor[ARR_SIZE]; int randNum; for (int i = 0; i < ARR_SIZE; i++) { randNum = rand.Next(MIN_FACTOR, MAX_FACTOR); factors[i] = (randNum); fObj[i] = new factor((uint)randNum); } return(fObj); }
/// <summary> /// Display MultiQ stats /// </summary> /// <param name="obj">multiQ object</param> /// <param name="queriedNumbers">contain list of queried numbers</param> /// <param name="factors">factor values</param> public static void DisplayMultiQStat(multiQ obj, int[] queriedNumbers, int[] factors) { string strFactorValues = ConvertArrayToString(factors); string strQueryNumbers = ConvertArrayToString(queriedNumbers); int[] arrSuccessQueriedNumbers = obj.GetQueriedNumberList(); string strSuccessQueriedNumbers = ParseArrayValuesToString(arrSuccessQueriedNumbers); Console.WriteLine(" Total queried numbers: {0}", strQueryNumbers); Console.WriteLine(" Factor values: {0}", strFactorValues); Console.WriteLine(" Stats from MultiQ class"); Console.WriteLine(" Successful queried numbers: {0}", strSuccessQueriedNumbers); Console.WriteLine(" Max queried number: {0}", obj.GetMaxQuery()); Console.WriteLine(" Min queried number: {0}", obj.GetMinQuery()); Console.WriteLine(" Average queried number: {0}", obj.GetAvgQuery()); Console.WriteLine(" Total successful queried count: {0}", obj.GetQueryCount()); }
/// <summary> /// Determine if number is multiple of factor value /// </summary> /// <param name="obj">multiQ object</param> /// <param name="rand">Random object</param> /// <param name="factors">contain factor values</param> /// <param name="arraySize">array size</param> public static void QueryMultiQ(multiQ obj, Random rand, int[] factors) { Console.WriteLine("\n"); Console.WriteLine(" Begin query MultiQ."); int randNum; uint queryCount; int[] arrQueryNumbers = new int[ARR_SIZE]; for (int i = 0; i < ARR_SIZE; i++) { randNum = rand.Next(RAND_MIN, RAND_MAX); arrQueryNumbers[i] = randNum; queryCount = obj.Query((uint)randNum); } DisplayMultiQStat(obj, arrQueryNumbers, factors); Console.WriteLine(" End query MultiQ."); }
/// <summary> /// Reset MultiQ private data members to initial value /// </summary> /// <param name="qObj"></param> public static void ResetMultiQObject(multiQ qObj) { Console.WriteLine("\n"); Console.WriteLine(" Begin reset MultiQ object"); qObj.Reset(); int[] arrSuccessQueriedNumbers = qObj.GetQueriedNumberList(); string strSuccessQueriedNumbers = ParseArrayValuesToString(arrSuccessQueriedNumbers); Console.WriteLine(" Reset MultiQ object"); Console.WriteLine(" Stats from MultiQ class"); Console.WriteLine(" Successful queried numbers: {0}", strSuccessQueriedNumbers); Console.WriteLine(" Max queried number: {0}", qObj.GetMaxQuery()); Console.WriteLine(" Min queried number: {0}", qObj.GetMinQuery()); Console.WriteLine(" Average queried number: {0}", qObj.GetAvgQuery()); Console.WriteLine(" Total successful queried count: {0}", qObj.GetQueryCount()); Console.WriteLine(" End reset MultiQ object"); Console.WriteLine("\n"); }
static void Main(string[] args) { Random rand = new Random(); ProgramIntro(); int[] arrFactorValues = new int[ARR_SIZE]; range rangeObj = InitRangeObject(rand, arrFactorValues); TestPingWithRandomNumber(rangeObj, arrFactorValues, rand); ReplaceRangeFactor(rangeObj, arrFactorValues, rand); TestPingWithRandomNumber(rangeObj, arrFactorValues, rand); multiQ multiQObj = InitMultiQObject(); factor[] arrFactorObj = InitFactorObject(rand, multiQObj, arrFactorValues); PushFactorObjectsToMultiQ(multiQObj, arrFactorObj, arrFactorValues); QueryMultiQ(multiQObj, rand, arrFactorValues); PopFactorObjectFromMultiQ(multiQObj); ResetMultiQObject(multiQObj); Console.Write("Press any key to terminate program... "); Console.ReadKey(); }