Question

USING C++: Referring to the header file below named coord2d.h, Implement each of the 8 operator...

USING C++:

Referring to the header file below named coord2d.h, Implement each of the 8 operator overloads

(operators: <<, [], >, <, two versions of +, two versions of *)

#ifndef COORD2D_H
#define COORD2D_H

#include <iostream>
using namespace std;

//implement a class that keeps track of the coordinates of a point in the X-Y plane
class coord2d
{
        //overload the << operator so that if p is of type "coord2d" then  "cout<<p";
        //will print out (x_coord, y_coord)
        //e.g. if p.x_coord=3.4, p.y_coord=-7 then "cout<<p" it will print out (3.4, -7)
        friend ostream& operator<<(ostream&, const coord2d&);

        //overload the > operator as a friend function so that if  p1 and p2  are of type "coord2d"
        //p1=(a,b), p2=(c,d)
        //then p1>p2  will true if  a>c and b>d.  It will return false otherwise
        //p1, p2 should not change
        friend bool operator>(const coord2d&, const coord2d&);

        //overload the < operator as a friend function so that if  p1 and p2  are of type "coord2d"
        //p1=(a,b), p2=(c,d)
        //then p1<p2  will true if  a<c and b<d.  It will return false otherwise
        //p1, p2 should not change
        friend bool operator<(const coord2d&, const coord2d&);

        //overload the * operator so that if p1 and p2 are of type "coord2d" and k is a double
        //then p1=k*p2 will result in the coordinates of p1 be set to those of p2 multiplied by k
        //p2 should not change
        //e.g., p1=(3,5), p2=(4,-2), k=2 then p1=k*p2 will result in p1=(8,-4) and p2=(4,-2) 
        friend coord2d operator*(double, const coord2d&);

        //overload the + operator so that if p1 and p2 are of type "coord2d" and x is a double
        //then p1=x+p2 will result in the coordinates of p1 be set to adding x to those of p2 
        //p2 should not change
        //e.g., p1=(3,5), p2=(4,-2), x=3 then p1=x+p2 will result in p1=(7,-1) and p2=(4,-2) 
        friend coord2d operator+(double, const coord2d&);


public:
        coord2d(double a = 0, double b = 0) { 
                x_coord = a, y_coord = b; }
        //default constructor: initializes coordinates x_coord and y_coord to a and b respectively.  
        void set(double a, double b) {
                x_coord = a, y_coord = b;}
        //sets the coordinates to (a,b)


        //overload the + operator as a member function so that if p1 and p2 and p3 are of type "coord2d" 
        //then p1=p2+p3 will result in the coordinates of p1 be set to adding coordinates of p3 to those of p2 
        //p2, p3 should not change
        //e.g., p1=(3,5), p2=(4,-2), p3=(10,20) then p1=p2+p3 will result in p1=(14,18), p2=(4,-2), p3=(10,20)
        coord2d operator+(const coord2d&) const;

        //overload the * operator as a member function so that if p1 and p2  are of type "coord2d"
        //p1=(a,b), p2=(c,d)
        //then p1*p2  will return a*c+b*d
        //p1, p2 should not change
        double operator*(const coord2d&) const;

        //overload [] operator so if p is of type "coord2d", then 
        //p[k] will return p_xcoord if k=0, p[k] will return p.y_coord if k=1 
        //and p[k] will display an error message and exit the program for other k's 
        double& operator[](int);

private:
        double x_coord;  //x coordinate
        double y_coord; //y coordinate
};


#endif
0 0
Add a comment Improve this question Transcribed image text
Answer #1

// coord2d.h

#ifndef COORD2D_H
#define COORD2D_H

#include <iostream>
using namespace std;

//implement a class that keeps track of the coordinates of a point in the X-Y plane
class coord2d
{
//overload the << operator so that if p is of type "coord2d" then "cout<<p";
//will print out (x_coord, y_coord)
//e.g. if p.x_coord=3.4, p.y_coord=-7 then "cout<<p" it will print out (3.4, -7)
friend ostream& operator<<(ostream&, const coord2d&);

//overload the > operator as a friend function so that if p1 and p2 are of type "coord2d"
//p1=(a,b), p2=(c,d)
//then p1>p2 will true if a>c and b>d. It will return false otherwise
//p1, p2 should not change
friend bool operator>(const coord2d&, const coord2d&);

//overload the < operator as a friend function so that if p1 and p2 are of type "coord2d"
//p1=(a,b), p2=(c,d)
//then p1<p2 will true if a<c and b<d. It will return false otherwise
//p1, p2 should not change
friend bool operator<(const coord2d&, const coord2d&);

//overload the * operator so that if p1 and p2 are of type "coord2d" and k is a double
//then p1=k*p2 will result in the coordinates of p1 be set to those of p2 multiplied by k
//p2 should not change
//e.g., p1=(3,5), p2=(4,-2), k=2 then p1=k*p2 will result in p1=(8,-4) and p2=(4,-2)
friend coord2d operator*(double, const coord2d&);

//overload the + operator so that if p1 and p2 are of type "coord2d" and x is a double
//then p1=x+p2 will result in the coordinates of p1 be set to adding x to those of p2
//p2 should not change
//e.g., p1=(3,5), p2=(4,-2), x=3 then p1=x+p2 will result in p1=(7,-1) and p2=(4,-2)
friend coord2d operator+(double, const coord2d&);


public:
coord2d(double a = 0, double b = 0) {
x_coord = a, y_coord = b; }
//default constructor: initializes coordinates x_coord and y_coord to a and b respectively.
void set(double a, double b) {
x_coord = a, y_coord = b;}
//sets the coordinates to (a,b)


//overload the + operator as a member function so that if p1 and p2 and p3 are of type "coord2d"
//then p1=p2+p3 will result in the coordinates of p1 be set to adding coordinates of p3 to those of p2
//p2, p3 should not change
//e.g., p1=(3,5), p2=(4,-2), p3=(10,20) then p1=p2+p3 will result in p1=(14,18), p2=(4,-2), p3=(10,20)
coord2d operator+(const coord2d&) const;

//overload the * operator as a member function so that if p1 and p2 are of type "coord2d"
//p1=(a,b), p2=(c,d)
//then p1*p2 will return a*c+b*d
//p1, p2 should not change
double operator*(const coord2d&) const;

//overload [] operator so if p is of type "coord2d", then
//p[k] will return p_xcoord if k=0, p[k] will return p.y_coord if k=1
//and p[k] will display an error message and exit the program for other k's
double& operator[](int);

private:
double x_coord; //x coordinate
double y_coord; //y coordinate
};

#endif

// end of coord2d.h

// coord2d.cpp

#include "coord2d.h"
#include <cstdlib>

ostream& operator<<(ostream& out, const coord2d& p)
{
   out<<"("<<p.x_coord<<", "<<p.y_coord<<")";
   return out;
}

bool operator>(const coord2d& p1, const coord2d& p2)
{
   return ((p1.x_coord > p2.x_coord) && (p1.y_coord > p2.y_coord));
}

bool operator<(const coord2d& p1, const coord2d& p2)
{
   return ((p1.x_coord < p2.x_coord) && (p1.y_coord < p2.y_coord));
}

coord2d operator*(double k, const coord2d& p)
{
   return coord2d(k*p.x_coord,k*p.y_coord);
}

coord2d operator+(double k, const coord2d& p)
{
   return coord2d(k+p.x_coord,k+p.y_coord);
}

coord2d coord2d:: operator+(const coord2d& p) const
{
   return coord2d(x_coord+p.x_coord,y_coord+p.y_coord);
}

double coord2d:: operator*(const coord2d& p) const
{
   return((x_coord*p.x_coord)+(y_coord*p.y_coord));
}

double& coord2d:: operator[](int k)
{
   if(k == 0)
       return x_coord;
   else if(k == 1)
       return y_coord;
   else
   {
       cout<<"Error: input can be 0 or 1"<<endl;
       exit(1);
   }
}


//end of coord2d.cpp

// main.cpp

#include <iostream>
#include "coord2d.h"
using namespace std;

int main()
{
   coord2d p1(3.4, 7) , p2(4,-2), p3(3,5);
   cout<<"P1: "<<p1<<endl;
   cout<<"P2: "<<p2<<endl;
   cout<<"P3: "<<p3<<endl;
   if(p1 > p3)
       cout<<p1<<" > "<<p3<<endl;
   else
       cout<<p1<<" not > "<<p3<<endl;

   if(p1 < p2)
       cout<<p1<<" < "<<p2<<endl;
   else
       cout<<p1<<" not < "<<p2<<endl;

   double k = 2;
   p1 = k*p2;
   cout<<k<<"*"<<p2<<" = "<<p1<<endl;

   p1 = k+p2;
   cout<<k<<"+"<<p2<<" = "<<p1<<endl;

   p1 = p2 + p3;
   cout<<p2<<"+"<<p3<<" = "<<p1<<endl;

   double result = p2 * p3;
   cout<<p2<<"*"<<p3<<" = "<<result<<endl;

   cout<<"P1[0] = "<<p1[0]<<" P1[1] = "<<p1[1]<<endl;

   cout<<"p1[2] = "<<p1[2]<<endl;

   return 0;
}

//end of main.cpp

Output:

Add a comment
Know the answer?
Add Answer to:
USING C++: Referring to the header file below named coord2d.h, Implement each of the 8 operator...
Your Answer:

Post as a guest

Your Name:

What's your source?

Earn Coins

Coins can be redeemed for fabulous gifts.

Not the answer you're looking for? Ask your own homework help question. Our experts will answer your question WITHIN MINUTES for Free.
Similar Homework Help Questions
  • please provide full answer with comments this is just begining course of c++ so don't use...

    please provide full answer with comments this is just begining course of c++ so don't use advanced tequenicks I'll put main.cpp, polynomial.h, polynomial.cpp and Cimg.h at the bottom of pictures. If you help me with this will be greatly thankful thank you main.cpp #include "polynomial.h" #include "polynomial.h" #include "polynomial.h" #include "polynomial.h" #include <iostream> using std::cout; using std::endl; int main() { pic10a::polynomial p1; p1.setCoeff(0, 1.2); p1.setCoeff(3, 2.2); p1.setCoeff(7, -9.0); p1.setCoeff(7, 0.0); //degree of polynomial is now 3 cout << p1 <<...

  • /* FILE: ./shapes7/shape.h */ #include <iostream> using std::ostream; class shape{ int x,y; public: shape( ) {...

    /* FILE: ./shapes7/shape.h */ #include <iostream> using std::ostream; class shape{ int x,y; public: shape( ) { x=y=0;} shape(int xvalue, int yvalue); void setShape(int new_x, int new_y); void setX(int new_x); void setY(int new_y); int getX( ) const; int getY( ) const; virtual void move(int x, int y) = 0; virtual void shift(int dx, int dy) = 0; virtual void draw( ) = 0; virtual void rotate(double r) = 0; virtual void print(ostream&)const; friend ostream & operator<<(ostream & os, const shape& s);...

  • Start by using the starter code provided for the Line class. It implements operator overloading so...

    Start by using the starter code provided for the Line class. It implements operator overloading so you can use cin/cout with line objects. A line will be made up of two points. Create an object to implement a “line” class which allows the programmer to store a line. This class must use the “point” class developed in Part B. The object should have two constructors, appropriate set/get functions, and overloaded I/O (cin/cout) functions. It should include functions the return the...

  • Study the c++ code below and answer the question on templates after // A polymorphic swap...

    Study the c++ code below and answer the question on templates after // A polymorphic swap function for any type of object (an example) template<typename T> void MySwap( T& x, T& y) { T temp; temp = x; x = y; y = temp; } // A polymorphic class holding an [x,y] position of any type template<class T> class Position { public: Position(T x=0, T y=0) : x_(x), y_(y) {} friend std::ostream& operator<<(std::ostream& os, const Position& p) { return os...

  • I only need the "functions" NOT the header file nor the main implementation file JUST the impleme...

    I only need the "functions" NOT the header file nor the main implementation file JUST the implementations for the functions Please help, if its difficult to do the complete program I would appreciate if you could do as much functions as you can especially for the derived class. I am a beginer so I am only using classes and pointers while implementing everything using simple c++ commands thank you in advanced Design and implement two C++ classes to provide matrix...

  • I need assistance with the C++ code below to remove the "this" pointers while maintaining the...

    I need assistance with the C++ code below to remove the "this" pointers while maintaining the code's current output and functionality. Also, there should be a private class in the header file, but I'm not sure what I should include there. Any help would be greatly appreciated! ***main.cpp driver file*** #include <iostream> #include "vector.h" using namespace std; int main() {   vectorInfo v1(7, 6);   vectorInfo v2(5, 4);       v1.set(3, 2);   cout << "v1 : ";   v1.print();       cout << "v2 :...

  • C++ CODE /* This is program project 2 on page 695. * Before you begin the...

    C++ CODE /* This is program project 2 on page 695. * Before you begin the project, please read the project description * on page 695 first. * * Author: Your Name * Version: Dates */ #include <iostream> #include <cmath> #include <cassert> using namespace std; class Fraction { public: // constructor Fraction(int a, int b); // generate a fraction which is a/b Fraction(int a); // generate a fraction which is a/1 Fraction(); // generate a fraction which is 0/1. i.e...

  • C++ Assignment - Only Implementation file( VectorDouble.cpp file) required. The header file is already given. Please help, thumbs up guaranteed. Chapter 8 discussed vectors, which are like arrays that...

    C++ Assignment - Only Implementation file( VectorDouble.cpp file) required. The header file is already given. Please help, thumbs up guaranteed. Chapter 8 discussed vectors, which are like arrays that can grow in size. Suppose that vectors were not defined in C++. Define a class called VectorDoublethat is like a class for a vector with base type double. Your class VectorDoublewill have a private member variable for a dynamic array of doubles. It will also have two member variables of type...

  • C++ CODE /* This is program project 2 on page 695. * Before you begin the...

    C++ CODE /* This is program project 2 on page 695. * Before you begin the project, please read the project description * on page 695 first. * * Author: Your Name * Version: Dates */ #include <iostream> #include <cmath> #include <cassert> using namespace std; class Fraction { public: // constructor Fraction(int a, int b); // generate a fraction which is a/b Fraction(int a); // generate a fraction which is a/1 Fraction(); // generate a fraction which is 0/1. i.e...

  • I need to implement a program that requests a x,y point and the radius of a...

    I need to implement a program that requests a x,y point and the radius of a circle. then it figures out the area and circumference using an overloaded operation. The full instructions, what I have and the errors I have are below. A point in the x-y plane is represented by its x-coordinate and y-coordinate. Design a class, pointType, that can store and process a point in the x-y plane. You should then perform operations on the point, such as...

ADVERTISEMENT
Free Homework Help App
Download From Google Play
Scan Your Homework
to Get Instant Free Answers
Need Online Homework Help?
Ask a Question
Get Answers For Free
Most questions answered within 3 hours.
ADVERTISEMENT
ADVERTISEMENT