В условии для оператора ''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 шт):
Скажите, а как вы себе представляете вот это присваивание?
(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)))
Ну а ошибка ваша в том, что оператор = (оператор присваивания) используется для - извините за тавтологию - присваивания значения к переменной. Оператор == (оператор сравнения) используется для - кхм, кхм - сравнения двух значений.
Заменяем
=на==