Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <algorithm>
- #include <cstdlib>
- int main (int argc, char* argv[]) {
- if (argc != 9) {
- std::cerr << "Необходимо задать 8 параметров" << std::endl;
- return 1;
- }
- int
- // результирующая площать S, пересечение по x, y
- S, Ix, Iy,
- // Пр1
- x1, y1, x2, y2,
- // Пр2
- X1, Y1, X2, Y2;
- // какой-нибудь ввод для [xyXY][12]... или парсить argv
- // ...
- x1 = atoi(argv[1]); y1 = atoi(argv[2]); x2 = atoi(argv[3]); y2 = atoi(argv[4]);
- X1 = atoi(argv[5]); Y1 = atoi(argv[6]); X2 = atoi(argv[7]); Y2 = atoi(argv[8]);
- S = abs(x2 - x1) * abs(y2 - y1);
- std::cout << "Заданы прямоугольники:\nПр1: (" << x1 << "; " << y1 << "), (" << x2 << "; " << y2 << "); S = " << S <<
- "\nПр2: (" << X1 << "; " << Y1 << "), (" << X2 << "; " << Y2 << ")" << std::endl;
- Ix = abs(x2 - x1) + abs(X2 - X1) - abs(std::max(x2, std::max(X2, std::max(x1, X1))) - std::min(x1, std::min(X1, std::min(x2, X2))));
- if (Ix > 0) {
- Iy = abs(y2 - y1) + abs(Y2 - Y1) - abs(std::max(y2, std::max(Y2, std::max(y1, Y1))) - std::min(y1, std::min(Y1, std::min(y2, Y2))));
- if (Iy > 0) { // вычитаем площадь пересечения
- std::cout << "Площадь пересечения = " << Ix * Iy << std::endl;
- S -= Ix * Iy;
- }
- }
- std::cout << "Площадь той части Пр1, которая не входит в Пр2 = " << S << std::endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement