Напишите функцию Rectangle intersect(Rectangle r1, Rectangle r2), которая вернёт пересечение прямоугольников r1 и r2 — новый прямоугольник.
Если у прямоугольников r1 и r2 нет пересечения, то допускается в качестве результата работы функции вернуть любой неположительный по площади прямоугольник.
Используя функцию rectangle_square, описанную в предыдущей задаче, посчитайте площадь пересечения прямоугольников, вводимых с клавиатуры.
Формат входных данных
Даны координаты двух пар точек, заданных с точностью не более 2 знаков после десятичной точки. Координаты не превосходят по модулю 1000.
Последовательность чисел следующая:
- точка r1.p1: x и y
- точка r1.p2: x и y
- точка r2.p1: x и y
- точка r2.p2: x и y
вход
4.0 6.0 3.0 9.0
1.0 4.0 5.0 8.0
выход
2,000000
Другие языки программирования и технологии
Люди скиньте пожаалуйста КОД! Очень сильно прошу! Язык программирования с++ ПАМАГИТИ если не сложно) Просто скиньте код)
#include <iostream>
#include <algorithm>
using namespace std;
struct Coord {
double x;
double y;
Coord() : x(0), y(0) {}
Coord(double x, double y) : x(x), y(y) {}
friend istream& operator>>(istream& in, Coord& p) {
in >> p.x >> p.y;
return in;
}
};
class Rectangle {
public:
Rectangle() = default;
Rectangle(const Coord& a, const Coord& b) : a_(a), b_(b) {
normalize_();
}
double area()const {
return fabs(a_.x - b_.x) * fabs(a_.y - b_.y);
}
Rectangle intersection(const Rectangle& rect) {
auto left = max(a_.x, rect.a_.x);
auto right = min(b_.x, rect.b_.x);
auto bottom = max(a_.y, rect.a_.y);
auto top = min(b_.y, rect.b_.y);
if (right - left < 0 || top - bottom < 0) return Rectangle();
return Rectangle(Coord(left, bottom), Coord(right, top));
}
private:
Coord a_;
Coord b_;
void normalize_() {
if (a_.y > b_.y) swap(a_.y, b_.y);
else if (a_.x > b_.x) swap(a_.x, b_.x);
}
};
Coord coord() {
Coord p;
cin >> p;
return p;
}
Rectangle rectangle() {
Coord p1, p2;
p1 = coord();
p2 = coord();
return Rectangle(p1, p2);
}
int main() {
auto r1 = rectangle();
auto r2 = rectangle();
cout << r1.intersection(r2).area() << '\n';
system("pause");
}
#include <algorithm>
using namespace std;
struct Coord {
double x;
double y;
Coord() : x(0), y(0) {}
Coord(double x, double y) : x(x), y(y) {}
friend istream& operator>>(istream& in, Coord& p) {
in >> p.x >> p.y;
return in;
}
};
class Rectangle {
public:
Rectangle() = default;
Rectangle(const Coord& a, const Coord& b) : a_(a), b_(b) {
normalize_();
}
double area()const {
return fabs(a_.x - b_.x) * fabs(a_.y - b_.y);
}
Rectangle intersection(const Rectangle& rect) {
auto left = max(a_.x, rect.a_.x);
auto right = min(b_.x, rect.b_.x);
auto bottom = max(a_.y, rect.a_.y);
auto top = min(b_.y, rect.b_.y);
if (right - left < 0 || top - bottom < 0) return Rectangle();
return Rectangle(Coord(left, bottom), Coord(right, top));
}
private:
Coord a_;
Coord b_;
void normalize_() {
if (a_.y > b_.y) swap(a_.y, b_.y);
else if (a_.x > b_.x) swap(a_.x, b_.x);
}
};
Coord coord() {
Coord p;
cin >> p;
return p;
}
Rectangle rectangle() {
Coord p1, p2;
p1 = coord();
p2 = coord();
return Rectangle(p1, p2);
}
int main() {
auto r1 = rectangle();
auto r2 = rectangle();
cout << r1.intersection(r2).area() << '\n';
system("pause");
}
Зачем ты его изучаешь? Если просишь нам писать код за тебя? Изучи питон или паскаль
Похожие вопросы
- Скорость выполнения кода на разных языках программирования?
- Задаю этот вопрос уже 3-й раз. Язык с++. Алгоритм я понимаю но вставить в код не могу ( Кому не сложно скиньте код!
- А какие языки программирования изучали в 80х и на чём вы их изучали?
- Добрый день. Компьютер все языки программирование понимает как двоичный код ( если я не ошибаюсь).
- Двоичный код быстрее языков программирования по типу c++? (Я знаю что эти языки тоже написаны на двоичном коде)
- Какой язык программирования выбрать для изучения для начинающего ? (внутри)
- С какого языка программирования начать?
- Какой язык программирования следует изучить в первую очередь, если в программировании вообще ничего не понимаешь?
- Какой язык программирования начать учить новичку? Чтобы не очень сложно, но и времени даром не терять
- И снова про языки программирования ^_^ Поправьте, если я ошибаюсь где-то.