Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

In C++, Redo Programming Exercise 1 by overloading the operators as nonmembers of the class rectangleType. The header and implementation file from Exercise 1 have

In C++,

Redo Programming Exercise 1 by overloading the operators as nonmembers of the class rectangleType. The header and implementation file from Exercise 1 have been provided.

Write a test program that tests various operations on the class rectangleType.

Here is the code that I have already done. Please review and correct my coding errors. THANK YOU

******** main.cpp *********

#include #include #include "rectangleType.h" using namespace std; int main() { rectangleType oldYard(20.00, 10.00); rectangleType newYard; cout << fixed << showpoint << setprecision(2); cout << "Line 10: Area of oldYard = "<< oldYard.area() << endl; newYard = oldYard.setDimension(); cout << "Line 12: Area of newYard = " << newYard.area() << endl; //Incrementing oldYard using ++ operator overloading cout<<"Incrementing oldYard rectangle object : "; oldYard++; cout<<"Rectangle details after incrementing : "; //Print rectangle description using << operator overloading cout<

*********retangleType.cpp *******

#include #include #include "rectangleType.h" using namespace std;

void rectangleType::setDimension(double l, double w) { if (l >= 0) length = l; else length = 0;

if (w >= 0) width = w; else width = 0; }

double rectangleType::getLength() const { return length; }

double rectangleType::getWidth()const { return width; }

double rectangleType::area() const { return length * width; }

double rectangleType::perimeter() const { return 2 * (length + width); }

rectangleType::rectangleType(double l, double w) { setDimension(l, w); }

rectangleType::rectangleType() { length = 0; width = 0; }

rectangleType rectangleType::operator++() { //increment the length and width ++length; ++width;

return *this; //return the incremented value of the object }

rectangleType rectangleType::operator++(int u) { rectangleType temp = *this; //use this pointer to copy //the value of the object //increment the length and width length++; width++;

return temp; //return the old value of the object }

rectangleType rectangleType::operator--() { //Decrement the length and width assert(length != 0 && width != 0); --length; --width;

return *this; //return the incremented value of the object }

rectangleType rectangleType::operator--(int u) { rectangleType temp = *this; //use this pointer to copy //the value of the object

//Decrement the length and width assert(length != 0 && width != 0); length--; width--;

return temp; //return the old value of the object }

rectangleType rectangleType::operator+ (const rectangleType& rectangle) const { rectangleType tempRect;

tempRect.length = length + rectangle.length; tempRect.width = width + rectangle.width;

return tempRect; }

rectangleType rectangleType::operator- (const rectangleType& rectangle) const { rectangleType tempRect;

assert(length >= rectangle.length && width >= rectangle.width);

tempRect.length = length - rectangle.length; tempRect.width = width - rectangle.width;

return tempRect; }

rectangleType rectangleType::operator*(const rectangleType& rectangle) const { rectangleType tempRect;

tempRect.length = length * rectangle.length; tempRect.width = width * rectangle.width;

return tempRect; }

bool rectangleType::operator== (const rectangleType& rectangle) const { return (area() == rectangle.area()); }

bool rectangleType::operator!= (const rectangleType& rectangle) const { return (area() != rectangle.area()); }

bool rectangleType::operator<= (const rectangleType& rectangle) const { return (area() <= rectangle.area()); }

bool rectangleType::operator< (const rectangleType& rectangle) const { return (area() < rectangle.area()); }

bool rectangleType::operator>= (const rectangleType& rectangle) const { return (area() >= rectangle.area()); }

bool rectangleType::operator> (const rectangleType& rectangle) const { return (area() > rectangle.area()); }

ostream& operator<<(ostream& osObject, const rectangleType& rectangle) { osObject << "Length = " << rectangle.length << "; Width = " << rectangle.width;

return osObject; }

istream& operator>>(istream& isObject, rectangleType& rectangle) { isObject >> rectangle.length >> rectangle.width;

return isObject; }

********* retangleType.h *********

#ifndef H_rectangleType #define H_rectangleType #include using namespace std;

class rectangleType { //Overload the stream insertion and extraction operators friend ostream& operator<<(ostream&, const rectangleType &); friend istream& operator>>(istream&, rectangleType &);

public: void setDimension(double l, double w); double getLength() const; double getWidth() const; double area() const; double perimeter() const;

//Overload the arithmetic operators rectangleType operator + (const rectangleType &) const; rectangleType operator - (const rectangleType &) const; rectangleType operator * (const rectangleType&) const;

//Overload the increment and decrement operators rectangleType operator ++ (); //pre-increment rectangleType operator ++ (int); //post-increment rectangleType operator -- (); //pre-decrement rectangleType operator -- (int); //post-decrement

//Overload the relational operators bool operator == (const rectangleType&) const; bool operator != (const rectangleType&) const; bool operator <= (const rectangleType&) const; bool operator < (const rectangleType&) const; bool operator >= (const rectangleType&) const; bool operator > (const rectangleType&) const;

//constructors rectangleType(); rectangleType(double l, double w);

protected: double length; double width; };

#endif

Task:

Overloaded operators as non-member functions

1

0 out of 1 checks passed. Review the results below for more details.

Checks

Code PatternIncomplete

Overloaded operators as non-member functions

Description

Searched your code for a specific pattern:

friend\s+rectangleType+\s+operator+\W{1,}

 You can learn more about regular expressions [here](https://ruby-doc.org/core-2.1.1/Regexp.html).

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

More Books

Students also viewed these Databases questions