@MrFlatman
Студент

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

Всем привет, есть код, не правильно работает в условии, немогли бы указать на ошибки
Картинка
59d50ab619e5f487281898.jpeg
#include "stdafx.h"
#include "iostream"
#include <conio.h>
using namespace std;

int main()
{
    int x, y, R=7, K=30;

    cout << "x=";
    cin >> x;
    cout << "y=";
    cin >> y;
    if ((x >= -K && y >= -K && (x + K)*(x + K) + (y + K)*(y + K) <= 4 * K*K)
        && !(y > -x && y*y + x*x < R*R));
    else
        cout << "Toshka ne popadaet";
    return 0;
}
  • Вопрос задан
  • 552 просмотра
Пригласить эксперта
Ответы на вопрос 1
KirillHelm
@KirillHelm
Выделяйте явно фигурными скобками область видимости логического блока if.
Разделите условия на составные части, но сделайте это лучше отдельными переменными, т.е.
bool isXPosRightThanLine1 = (x >= -K);
bool isYPosUpperThanLine1 = (y >= -K);
...

Кроме того, вынесети их в отдельную функцию типа:
bool isPointInArea(const int& xPos, const int& yPos);

А уже в блоке if у вас получится:
if (isPointInArea(x,y))
{
   //do something
}
else
{
   //do something else
}

Тем самым вы добьетесь большей читаемости кода и более простой его поддерживаемости.

Так же как уже говорили в коментах используйте лучше math.h библиотеку для математических вычеслений,
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы