Practice Exercise #8
The following source file, named ex8.cc,
uses a parameterized type, Range, that implements an integer type restricted
to some consecutive interval (1 to 1000 in this example):
When run, the following output is produced:
bash$ g++ -Wall -std=gnu++0x -g -o ex8 ex8.cc
bash$ ./ex8
x = 911
y = 44
z = 120
x+y+z = NaN
bash$
Your job is to implement Range so that the code above compiles
cleanly and produces the output shown when run.
Notes:
- If a value falls outside the interval of the Range type, the result is Nan (not a number).
Any operation involving a NaN value produces a Nan result.
- If you have a constructor that takes a single integer argument, then C++ will automatically
promote integer literals to Range objects if needed. (For example, (x-z) * 4
multiplies a Range by an int. The solution code does not define a method for that, but does
define Range times Range. C++ creates a Range object from the 4 literal, then invokes
the Range multiplication operator.)
- The result of the to_string method is a C++ string object.
- Put all your code in a single file, Range.h. (That is, put your code directly
in the .h file, not in a separate .cc file.)
- We will grade your code by linking it with a grading mainline and examining the results
it produces. That mainline may use arbitrary arithmetic formulas, but restricted
to the four operators shown in the example mainline.