Вхождение точки в заштрихованную облость

задача из степика. не могу найти свою ошибку. вот мой код: a - верхний левый квадрат. b - верхний правый квадрат. с - нижний. d - область с вхождениями.

Требуется написать программу, при выполнении которой с клавиатуры считываются координаты точки на плоскости (x x x, y y y - действительные числа) и определяется принадлежность этой точки заданной заштрихованной области (включая границы). В случае, если точка внутри заштрихованной области -- выведите слово "Inside", если снаружи - "Outside".

#include <iostream>
using namespace std;
 
int main() {
  double x , y;
  cin >> x >> y;
  bool a = ( x >= -4) && (x <= -2) && ( y >= 2) && ( y <= 4);
  bool b = (x >= -1) && (x <= 1) && (y >= 2) && ( y <= 4);
  bool c = (x >= -4) && ( x <= 1) && (y >= -2) && ( y <= 0);
  bool d = (x >= -5) && ( x <= 2) && ( y >= -3) && (y <= 5);
  
  if(d && !a && !b && !c){
    cout << "Inside";
  }else{
    cout << "Outside";
  }
  return 0;
}

введите сюда описание изображения


Ответы (1 шт):

Автор решения: PashaFromBY
#include <iostream>
using namespace std;

int main() {
  // put your code here
  double x , y;
  cin >> x >> y;
  bool a = ( x > -4) && (x < -2) && ( y > 2) && ( y < 4);
  bool b = (x > -1) && (x < 1) && (y > 2) && ( y < 4);
  bool c = (x > -4) && ( x < 1) && (y > -2) && ( y < 0);
  bool d = (x >= -5) && ( x <= 2) && ( y >= -3) && (y <= 5);
  
   if(d && !(a || b || c)){
    cout << "Inside";
  }else{
    cout << "Outside";
  }
  return 0;
}
→ Ссылка