1

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

Ошибка находится под второй открывающей скобкой после ! в (!((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 &gt;= (-4) &amp;&amp; x &lt;= 4 &amp;&amp; y &lt;= 4 &amp;&amp; y &gt;= (-4)) &amp;&amp; (!((pow((x - 2), 2)) + (pow(y, 2)) = 4))) 

Manukafool
  • 37
  • 6
  • А какова ваша задача? Откуда взялись числа 4 и -4 и что черт возьми происходит во второй части условия? – Максим Фисман Dec 03 '20 at 19:53
  • В условии для if я хотел задать что х находится в квадрате который ограничен линиями х=4, х=-4, у=4, у=-4 , и в тоже время не находится в кругу который обозначается этой формулой (pow((x - 2), 2)) + (pow(y, 2)) = 4 – Manukafool Dec 03 '20 at 20:01
  • Хотел бы вам также порекомендовать ТОЧНЕЕ оформлять вопрос. В вопрос обязательно должно быть чего вы хотите! Почему мне пришлось это доспрашивать? Также нет такой формулировки кругy, который обозначается формулой ... существует формулировка окружности, график которой задается формулой y = ... Ну вы же просили рекомендации по оформлению кода и вопроса:) – Максим Фисман Dec 03 '20 at 20:11
  • Понял, учту это в следующий раз. – Manukafool Dec 03 '20 at 20:14

2 Answers2

2

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

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

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

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

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

Harry
  • 221,325
  • В условии для if я хотел задать что х находится в квадрате который ограничен линиями х=4, х=-4, у=4, у=-4 , и в тоже время не находится в кругу который обозначается этой формулой (pow((x - 2), 2)) + (pow(y, 2)) = 4 – Manukafool Dec 03 '20 at 19:54
  • В данном случае мне это не важно, это вы @МаксимФисман ответьте :) – Harry Dec 03 '20 at 19:56
  • То есть, мне вместо = нужно поставить == что бы всё работало? Извините за такие вопросы , я недавно начал заниматься изучением с++ – Manukafool Dec 03 '20 at 19:59
  • Один = - это присвоение. x = y - в переменную x положить значение y. Двойной == - проверка равенства. if (x == y) ... - если значение x равно значению y, то... Вы у себя попытались положить 4 в... словом, не в переменную. Как если бы написали 5 = 4 - что смысла не имеет... – Harry Dec 03 '20 at 20:01
  • Сейчас проверю код и отпишу помогло ли это. – Manukafool Dec 03 '20 at 20:03
1

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

&& (!((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)))

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

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

  • Кстати, еще увидел, что можно сократить еще 2 скобки. Все выражение с восклицательным знаком итак в скобках, зачем брать и его в скобки, т.е. меняем && (!(pow(x - 2, 2) + pow(y, 2) = 4))) на && !(pow(x - 2, 2) + pow(y, 2) = 4)) – Максим Фисман Dec 05 '20 at 07:42