В условии для оператора ''if'' выводит ошибку Е0137

В общем, задали мне сделать программу для определения, находится точка заданая пользователем в некоторой зоне или нет, но у меня высветилась ошибка , и я не знаю как мне быть. Буду рад советам и критике по поводу оформления вопросов и самого кода!

Ошибка находится под второй открывающей скобкой после ! в (!((pow((x - 2), 2)) + (pow(y, 2)) = 4))

#include<iostream>
#include<cmath>
using namespace std;

int main()
{
    float x, y;
    cout << "Enter x: ";
    cin >> x;
    cout << "Enter y: ";
    cin >> y;
    
    if ((x >= (-4) && x <= 4 && y <= 4 && y >= (-4)) && (!((pow((x - 2), 2)) + (pow(y, 2)) = 4))) 

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

Автор решения: Harry

Скажите, а как вы себе представляете вот это присваивание?

(pow((x - 2), 2)) + (pow(y, 2)) = 4

Ну, которое у вас в if? И на которое совершенно недвузначно указал компилятор, как вы и сами, впрочем, поняли.

Вобщем, исправьте присваивание на сравнение...

Кстати, а зачем у вас столько вообще-то ненужных скобок? это к вопросу об оформлении кода. И еще - тут вызов pow, как по мне, совершенно излишний.

→ Ссылка
Автор решения: Максим Фисман

Так стоп. Меня от этого начало подтряхивать. А еще в глазах зарябило.

&& (!((pow((x - 2), 2)) + (pow(y, 2)) = 4)))

  • Функция pow принимает первым аргументом число. Однако этим числом может быть и целое выражение.

Меняем (x - 2) на x - 2

  • Функция pow в скобки брать не надо, так как это бессмысленно. Это то же, что взять в скобки просто число, типа так: (2).

Меняем ((pow((x - 2), 2)) на (pow((x - 2), 2)

Аналогично (pow(y, 2)) меняем на pow(y, 2)

Получаем: && (!(pow(x - 2, 2) + pow(y, 2) = 4)))

Ну а ошибка ваша в том, что оператор = (оператор присваивания) используется для - извините за тавтологию - присваивания значения к переменной. Оператор == (оператор сравнения) используется для - кхм, кхм - сравнения двух значений.

Заменяем = на ==

→ Ссылка