سلام!

جواب تمرین قبلی را می توانید در کد زیر مشاهده کنید.

#include <iostream>
#include <cstdio>

using namespace std;

class Point{
    
    friend void set(Point*, double = 0, double = 0);
    friend istream &operator>>(istream&, Point&);
    friend ostream &operator<<(ostream&, const Point&);

    private:

        double _x, _y;
        
    public:

        Point(double = 0, double = 0);

        double x() const;
        double y() const;

        void setX(double);
        void setY(double);

        void print();

};

Point::Point(double x, double y){
    this->setX(x);
    this->setY(y);
}

void Point::setX(double x){
    this->_x = x;
}

void Point::setY(double y){
    this->_y = y;
}

double Point::x() const{
    return this->_x;
}

double Point::y() const{
    return this->_y;
}

void Point::print(){
    printf("(%g, %g)", this->x(), this->y());
}

Point operator+(const Point &p1, const Point &p2){
    return Point(p1.x() + p2.x(), p1.y() + p2.y());
}

Point operator-(const Point &p1, const Point &p2){
    return Point(p1.x() - p2.x(), p1.y() - p2.y());
}

Point operator*(const Point &p1, const Point &p2){
    return Point(p1.x() * p2.x(), p1.y() * p2.y());
}

Point operator/(const Point &p1, const Point &p2){
    return Point(p1.x() / p2.x(), p1.y() / p2.y());
}

Point operator+(const int &a, Point &p){
    return Point(p.x() + a, p.y() + a);
}

Point operator+(const Point &p, const int &a){
    return Point(p.x() + a, p.y() + a);
}

bool operator>(const Point &p1, const Point &p2){
    if (p1.x() > p2.x())
        return true;
    if (p1.y() > p2.y())
        return true;
    return false;
}

bool operator==(const Point &p1, const Point &p2){
    return p1.x() == p2.x() && p1.y() == p2.y();
}

bool operator!=(const Point &p1, const Point &p2){
    return !(p1 == p2);
}

bool operator<(const Point &p1, const Point &p2){
    return !(p1 > p2) && !(p1 == p2);
}

bool operator<=(const Point &p1, const Point &p2){
    return !(p1 > p2);
}

bool operator>=(const Point &p1, const Point &p2){
    return !(p1 < p2);
}

void operator+=(Point &p1, const Point &p2){
    p1.setX(p1.x() + p2.x());
    p1.setY(p1.y() + p2.y());
}

void operator+=(Point &p1, const int &a){
    p1.setX(p1.x() + a);
    p1.setY(p1.y() + a);
}

void operator-=(Point &p1, const Point &p2){
    p1.setX(p1.x() - p2.x());
    p1.setY(p1.y() - p2.y());
}

void operator-=(Point &p1, const int &a){
    p1.setX(p1.x() - a);
    p1.setY(p1.y() - a);
}

void operator*=(Point &p1, const Point &p2){
    p1.setX(p1.x() * p2.x());
    p1.setY(p1.y() * p2.y());
}

void operator*=(Point &p1, const int &a){
    p1.setX(p1.x() * a);
    p1.setY(p1.y() * a);
}

void operator/=(Point &p1, const Point &p2){
    p1.setX(p1.x() / p2.x());
    p1.setY(p1.y() / p2.y());
}

void operator/=(Point &p1, const int &a){
    p1.setX(p1.x() / a);
    p1.setY(p1.y() / a);
}

istream &operator>>(istream &input, Point &p){
    input >> p._x >> p._y;
    return input;
}

ostream &operator<<(ostream &output, const Point &p){
    output << '(' << p._x << ", " << p._y << ')';
    return output;
}

Point operator++(Point &p){
    p.setX(p.x() + 1);
    p.setY(p.y() + 1);
    return p;
}

Point operator++(Point &p, int){
    Point p2 = p;
    p.setX(p.x() + 1);
    p.setY(p.y() + 1);
    return p2;
}

int main(){
    Point p1, p2;
    cin >> p1 >> p2;
    cout << (p1 + p2) << endl;
    return 0;
}

در این فایل عمل گر ها به صورت کلی بهبود یافته اند و این تغییرات فقط مختص به جلسه ی پیش نیست.

هر سوالی داشتید در قسمت نظرات بپرسید.

موفق باشید!