Challenge: Using a Code::Blocks or Visual Studio project, create three files, main.cpp, stats.h, and stats.cpp. Without breaking basic guidelines for header files, create a class with constructors that will either accept two numbers as doubles (n1 and n2) or an integer (k) and a standard string object containing a comma seperated list of numbers with or without spaces (n1, n2, n3, ...). Use private variables to store everything. Necessary functions are as follows: int compute double sum double product int numUnique int combinations int uniqueCombinations void order double mean double mode double median std::string range double largestNum Each function must be public and performs the following: compute: Called with or without an integer argument or two representing an ID range within the set to perform the computations on. for example compute(12,20) will perform the computations on {n12, ..., n20}. Compute is responsible for computing the total sum and product of the numbers as well as determining the number of unique numbers, unique combinations, as well as non-unique combinations. It will also create an array with the numbers ordered (it doesn't matter from greatest to least or from least to greatest) and calculate the mean, mode, median, and range of the numbers. Be sure to catch overflows, but do not let it hang or stop the program. If the sum overflows, return a "SUM_OVERFLOW" using either enumerations or defines. Do the same for others: PRODUCT_OVERFLOW, MEAN_OVERFLOW, NO_MODE, GENERAL_ERROR. sum: Returns the value of the total sum of the range calculated from the compute function. product: Returns the value of the total product of the range calculated from the compute function. numUnique: Returns the number of unique numbers. combinations: Returns the number of non-unique combinations possible. uniqueCombinations: Returns the number of unique combinations possible. order: It has two arguments, one is a double pointer as an argument to an array !!!BE CAREFUL TO AVOID MEMORY LEAKS AND OTHER ERRORS!!! and the other is a flag using either LEAST_TO_GREATEST, or GREATEST_TO_LEAST to determine the order to store the numbers in. It copies the numbers ordered from the compute function into the pointer provided to an array. mean: Returns the mean (average). mode: Returns the mode. median: Returns the median. range: Returns the range as a string. ("rS-rE" No quotes) Ex. "4.5-8.1" largestNum: Returns the largest number. Strict inputs: A number(k) will be entered followed by a comma seperated list of numbers k (n1, n2,n3, ...) to be manipulated. k n1, n2, n3,n4,n5,n6, ...,nk Ex1: 3 4.5, 1.2, 3 Ex2: 12 3.1,09191999,2.4,0.111,8,5,100,100,82.11113,65.2,42,17 Strict outputs: Compute is to be performed on intervals of 5, and the output will be as follows sum{n1:n5 or n1:nk} product{n1:n5 or n1:nk} numUnique{n1:n5 or n1:nk} combinations{n1:n5 or n1:nk} unqiueCombinations{n1:n5 or n1:nk} order(LEAST_TO_GREATEST){n1:n5 or n1:nk} order(GREATEST_TO_LEAST){n1:n5 or n1:nk} mean{n1:n5 or n1:nk} mode{n1:n5 or n1:nk} median{n1:n5 or n1:nk} range{n1:n5 or n1:nk} largestNum{n1:n5 or n1:nk} numUnique{n6:n10 or n6:nk}, uniqueCombinations{n6:n10 or n6:nk}, mean{n6:n10 or n6:nk}, mode{n6:n10 or n6:nk}, largestNum{n6:n10 or n6:nk} ... numUnique{n(k-5):nk}, uniqueCombinations{n(k-5):nk}, mean{n(k-5):nk}, mode{n(k-5):nk}, largestNum{n(k-5):nk} Ex1: 8.7 16.2 3 6 3 1.2, 3, 4.5 4.5, 3, 1.2 2.9 N/A 3 1.2-4.5 4.5 Ex2: 9192012.611 60728963.63328 5 120 24 .111, 2.4, 3.1, 8, 9191999 9191999, 8, 3.1, 2.4, .111 1838402.5222 N/A 3.1 .111-9191999 9191999 4, 17, 70.462226, 100, 82.11113 2, 1, 29.5, N/A, 42 *There may be errors in the example, but the idea should be clear Goals: Challenge the mind Enforce "modular" thinking Provide a way to asses code Provide a way to asses comments and organization Strengthen knowledge Provide a real-world-like scenario Encourage use of one's resources and knowledege Encourage use of a multi-filed projects and layout Provide back and forth improvement Return format and format of the project: The project should be compressed into a zipped folder before being sent. Project Root |___Classes_Headers Challenge.cbp |___Classes_Headers Challenge.depend |___Classes_Headers Challenge.layout |___main.cpp |___stats.cpp |___stats.h Comments: The code will be assessed in how well it is written, how effective the comments are, the strict output(s) from the input(s), and whether or not it works when stats.h and stats.cpp is thrown into a different project. There is no letter grade obviously... Only comments. Good Luck! Ask questions if needed and use the reference at http://www.cplusplus.com/reference/. Feel free to use Google, but make sure you understand what you are doing and question everything to avoid bad techniques. Adam