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:
statistician s;
s.next_number(1.1);
s.next_number(-2.4);
s.next_number(0.8);
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.