Write the implementation for the class declaration below. class Range { friend o
ID: 3759074 • Letter: W
Question
Write the implementation for the class declaration below.
class Range {
friend ostream & operator <<(ostream &, const Range & r); // e.g. [3,5]
public:
// initialize minimum to the smaller of mini,maxi and maximim to the bigger
Range(int mini, int maxi);
const int minimum, maximum;
bool isIn(int val) const; // return true if val in the interval [minimum, maximum]
};
Note: the overloaded stream insertion operator is not a member function. It's declared as a friend function so the implementation has access to private data of parameter r. Driver code is below.
int main() {
int mn, mx;
cin >> mn >> mx;
Range r(mn,mx);
cout << "The range is " << r.minimum << " to " << r.maximum << " inclusive." << endl;
for (int i = r.minimum-3; i <= r.maximum+3; i++)
cout << left << setw(4) << i
<< (r.isIn(i) ? " is " : " isn't")
<< " in " << r << endl;
return 0;
}
A sample run:
3 1
The range is 1 to 3 inclusive.
-2 isn't in [1,3]
-1 isn't in [1,3]
0 isn't in [1,3]
1 is in [1,3]
2 is in [1,3]
3 is in [1,3]
4 isn't in [1,3]
5 isn't in [1,3]
6 isn't in [1,3]
Press any key to continue . . .
Explanation / Answer
#include<iostream>
#include<string.h>
#include<iomanip>
using namespace std;
class Range {
friend ostream & operator <<(ostream &, const Range & r); // e.g. [3,5]
public:
// initialize minimum to the smaller of mini,maxi and maximim to the bigger
Range(int mini, int maxi);
const int minimum, maximum;
bool isIn(int val) const; // return true if val in the interval [minimum, maximum]
};
Range::Range(int mini, int maxi): minimum(mini), maximum(maxi) {
}
bool Range::isIn(int val) const {
if (val >= minimum && val <= maximum) {
return true;
}
return false;
}
ostream & operator <<(ostream &out, const Range & r) {
out<<"["<<r.minimum<<", "<<r.maximum<<"]";
return out;
}
int main() {
int mn, mx;
cin >> mn >> mx;
Range r(mn,mx);
cout << "The range is " << r.minimum << " to " << r.maximum << " inclusive." << endl;
for (int i = r.minimum-3; i <= r.maximum+3; i++)
cout << left << setw(4) << i<< (r.isIn(i) ? " is " : " isn't")<< " in " << r << endl;
return 0;
}
Related Questions
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.