Design and implement a class called statistician in C++. After a statistician is initialized, it can be given a sequence of double numbers. Each number in the sequence is given to the statistician by activating a member function called next_number.
For example, we can declare a statistician called s, and then give it the sequence of numbers 1.1, -2.4, 0.8 as shown here:
After a sequence has been given to a statistician, there are various member functions to obtain information about the sequence. Include member functions that will provide
- the length of the sequence,
- the last number of the sequence,
- the sum of all the numbers in the sequence,
- the arithmetic mean of the numbers (that is, the sum of the numbers divided by the length of the sequence),
- the smallest number in the sequence,
- and the largest number in the sequence.
Notice that the length and sum functions can be called at any time, even if there are no numbers in the sequence. In this case of an "empty" sequence, both length and sum will be zero. But all the other member functions have a precondition requiring that the sequence is non-empty.
Also provide a member function that erases the sequence (so that the statistician can start afresh with a new sequence).
Overload the + operator to add two statisticians. If s1 and s2 are two statisticians, then the result of s1 + s2 should be a new statistician that behaves as if it had all of the numbers of s1 followed by all of the numbers of s2.
Do not try to store the entire sequence because we do not know how long this sequence will be. Instead, just store the necessary information about the sequence: What is the sequence length? What is the sum of the numbers in the sequence? What are the last, smallest, and largest numbers? Each of these pieces of information can be stored in a private member variable that is updated whenever next_number is activated.
Please go through the attached program (500284_statistician.cpp) and fine tune it as per your requirement as
- it has probably more matter than you require as the intention here is to guide you and make the things clear to you,
- it returns -1 (in relevant member functions) in case precondition is not met and also emits error messages via cerr - you need to adjust this behavior as per your requirement,
- basic comments ...
Attached code has been tested with GNU C++ compiler (g++ (GCC) 4.3.4). You will need to fine tune it as per your requirement as the intention here is to guide you. Please note that the attachment is a plain text file and ".cpp" simply indicates that it contains C++ code.