Не могу найти ошибку в коде c++, который ищет зону на графике по координате
Многие координаты отображает неправильно и я искренне не понимаю, что не так. В какие-то моменты код выводит зону вообще вне условия. Образно написано if (y < 0) z = 45, но 45 выводит при координате y > 0. Помогите пожалуйста найти ошибки...
Тз: Разработать консольное Win32 приложение для определения номера зоны на диаграмме, в которую попала точка, введенная пользователем. Пользователь вводит с клавиатуры координаты X и Y некоторой точки. Определить в какую из зон, согласно приведенной ниже диаграмме, в соответствии со своим вариантом с попала точка. Если точка попадает на границу зон, отнести ее к зоне с большим номером.
Мой код:
#include <iostream>
#include <math.h>
using namespace std;
int main()
{
setlocale(LC_ALL, "");
double x, y, f1, f2, f3, f4, z;
int i;
i = 100;
for (i; i > 0; i--) {
cout << "введите координату по x [-3; 3]: ";
cin >> x;
cout << "введите координату по y [-3; 3]: ";
cin >> y;
if ((x > 3) || (x < -3) || (y > 3) || (y < -3)) cout << "Чел, ты... Написала же, что промежуток [-3; 3]";
else {
f1 = -sqrt(x);
f2 = -(x * x) - 1;
f3 = ((x * x) / 4) + y * y;
f4 = x - 1;
// if ((y > - x * x - 1) && (y < - sqrt(x) && ((x * x) / 4 + )) cout << 1;
if ((x == 0) && (y == 1)) z = 21;
else if ((x < 0) && (y > 1)) z = 6;
else if ((x > 0) && (y > 1)) {
if (y >= f4) z = 5;
else z = 4;
}
else if ((x < 0) && (0 < y <= 1)) {
if (f3 > 1) z = 7;
else z = 20;
}
else if ((x > 0) && (0 < y <= 1)) {
if (y >= f4) {
if (f3 >= 1) z = 21;
else z = 19;
}
else {
if (f3 > 1) z = 3;
else z = 18;
}
}
else if (y < 0) {
if (x < 0) {
if (f3 <= 1) z = 12;
else {
if ((y > f4) && (y > f2)) z = 8;
else if ((y <= f2) && (y <= f4)) z = 13;
else if (y < f4) {
if (y < f2) z = 10;
else z = 9;
}
}
}
else if (x > 0) {
if (f1 <= y) {
if (y > f4) z = 16;
else if ((y <= f4) && (f3 <= 1)) z = 17;
else z = 2;
}
else {
if (y >= f4) z = 15;
else {
if (f3 <= 1) z = 14;
else {
if (y > f2) z = 1;
else z = 11;
}
}
}
}
else if (x == 0) {
if (3 >= y > 1) z = 6;
else if (1 >= y > 0) z = 20;
else if (0 > y >= -1) z = 15;
else z = 11;
}
else if (y == 0) {
if (-3 <= x < -2) z = 7;
else if (-2 <= x < 0) z = 20;
else if (0 < x <= 1) z = 19;
else if (1 < x <= 2) z = 18;
else z = 3;
}
}
cout << z << endl;
}
}
}
