#include "pch.h"
#include <algorithm>
#include <iostream>
using namespace std;
class Point //класс
{
private:
double x; //поле
double y;
public:
void set_y(double yy)
{
y = yy;
}
Point()
{
}
Point(double xx, double yy = 5) //конструктор
: x(xx), y(yy)
{
if (x < 0)
x = 0;
if (y < 0)
y = 0;
}
double dist() //метод
{
return sqrt(x * x + y * y);
}
double scl(Point other)
{
return x * other.x + y * other.y;
}
void print()
{
cout << x << " " << y << endl;
}
Point operator+(Point other) // Перегрузка оператора +
{
return Point(x + other.x, y + other.y);
}
Point operator+(double other)
{
return Point(x + other, y + other);
}
bool operator<(Point other) //this < other
// Перегрузка оператора <
{
return x < other.x || (x == other.x && y < other.y);
}
};
int main()
{
Point p1(4.2, 5.3); // экземпляр структуры (объект)
Point p2(12);
p2.set_y(3.5);
Point p3 = p1 + p2;
p3.print();
Point p4 = p1 + 3.0;
p4.print();
Point points[3];
points[0] = Point(1, 3);
points[1] = Point(5, 1);
points[2] = Point(2, 5);
sort(points, points + 3); // Нужна перегрузка оператора <
for (int i = 0; i < 3; i++)
points[i].print();
}
I2luY2x1ZGUgInBjaC5oIgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8aW9zdHJlYW0+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgUG9pbnQgLy/QutC70LDRgdGBCnsKcHJpdmF0ZToKCWRvdWJsZSB4OyAvL9C/0L7Qu9C1Cglkb3VibGUgeTsKCnB1YmxpYzoKCXZvaWQgc2V0X3koZG91YmxlIHl5KQoJewoJCXkgPSB5eTsKCX0KCglQb2ludCgpCgl7Cgl9CgoJUG9pbnQoZG91YmxlIHh4LCBkb3VibGUgeXkgPSA1KSAvL9C60L7QvdGB0YLRgNGD0LrRgtC+0YAKCQk6IHgoeHgpLCB5KHl5KQoJewoJCWlmICh4IDwgMCkKCQkJeCA9IDA7CgkJaWYgKHkgPCAwKQoJCQl5ID0gMDsKCX0KCglkb3VibGUgZGlzdCgpIC8v0LzQtdGC0L7QtAoJewoJCXJldHVybiBzcXJ0KHggKiB4ICsgeSAqIHkpOwoJfQoKCWRvdWJsZSBzY2woUG9pbnQgb3RoZXIpCgl7CgkJcmV0dXJuIHggKiBvdGhlci54ICsgeSAqIG90aGVyLnk7Cgl9CgkKCXZvaWQgcHJpbnQoKQoJewoJCWNvdXQgPDwgeCA8PCAiICIgPDwgeSA8PCBlbmRsOwoJfQoKCVBvaW50IG9wZXJhdG9yKyhQb2ludCBvdGhlcikgLy8g0J/QtdGA0LXQs9GA0YPQt9C60LAg0L7Qv9C10YDQsNGC0L7RgNCwICsKCXsKCQlyZXR1cm4gUG9pbnQoeCArIG90aGVyLngsIHkgKyBvdGhlci55KTsKCX0KCQoJUG9pbnQgb3BlcmF0b3IrKGRvdWJsZSBvdGhlcikKCXsKCQlyZXR1cm4gUG9pbnQoeCArIG90aGVyLCB5ICsgb3RoZXIpOwoJfQoKCWJvb2wgb3BlcmF0b3I8KFBvaW50IG90aGVyKSAvL3RoaXMgPCBvdGhlcgoJCQkJCQkJCS8vINCf0LXRgNC10LPRgNGD0LfQutCwINC+0L/QtdGA0LDRgtC+0YDQsCA8Cgl7CgkJcmV0dXJuIHggPCBvdGhlci54IHx8ICh4ID09IG90aGVyLnggJiYgeSA8IG90aGVyLnkpOwoJfQoKfTsKCmludCBtYWluKCkKewoJUG9pbnQgcDEoNC4yLCA1LjMpOyAvLyDRjdC60LfQtdC80L/Qu9GP0YAg0YHRgtGA0YPQutGC0YPRgNGLICjQvtCx0YrQtdC60YIpCgoJUG9pbnQgcDIoMTIpOwoJcDIuc2V0X3koMy41KTsKCglQb2ludCBwMyA9IHAxICsgcDI7CglwMy5wcmludCgpOwoJUG9pbnQgcDQgPSBwMSArIDMuMDsKCXA0LnByaW50KCk7CgoJUG9pbnQgcG9pbnRzWzNdOwoJcG9pbnRzWzBdID0gUG9pbnQoMSwgMyk7Cglwb2ludHNbMV0gPSBQb2ludCg1LCAxKTsKCXBvaW50c1syXSA9IFBvaW50KDIsIDUpOwoKCXNvcnQocG9pbnRzLCBwb2ludHMgKyAzKTsgLy8g0J3Rg9C20L3QsCDQv9C10YDQtdCz0YDRg9C30LrQsCDQvtC/0LXRgNCw0YLQvtGA0LAgPAoJZm9yIChpbnQgaSA9IDA7IGkgPCAzOyBpKyspCgkJcG9pbnRzW2ldLnByaW50KCk7Cn0K