Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/40: Рейтинг темы: голосов - 40, средняя оценка - 5.00
0 / 0 / 1
Регистрация: 22.02.2018
Сообщений: 31
1

Определить попадание точки в область

22.02.2018, 12:07. Показов 7297. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброе время суток, подскажите в чем ошибка нахождения попадания точки для полукруга?
Еще, нужно что бы при вводе отрицательного числа Y, программа писала что точка не попадает в область. Как это сделать? Ведь там отрицательное число возводится в квадрат, а по факту координата отрицательная. Как все это реализовать для второго рисунка?

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <iostream>
using namespace std;
int main()
{
    setlocale(LC_ALL, "Rus");
        double x, y, R;
        cout << "Введите координаты точки и радиус:\n";
        cin >> x >> y >> R;
        if ((y <= 0 && x <=0 && ((x - R) * (x - R) + (y - R) * (y - R) >= R * R)) ||
(y > 0 && x > 0 && ((x + R) * (x + R) + y * y <= R * R)))
            cout << " Точка попадает в область\n";
        else cout << " Точка не попадает в область\n";
        system("pause");
        return 0;
}
Миниатюры
Определить попадание точки в область  
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.02.2018, 12:07
Ответы с готовыми решениями:

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

Определить попадание точки в заданную область
Дана заштрихованная область и точка с координатами x, y. Написать программу, определяющую, попадет...

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

Определить попадание точки в заданную область
Здравствуйте, помогите пожалуйста с решением. Записать логическое выражение, которое принимает...

17
Заблокирован
22.02.2018, 12:17 2
C++
1
if (y <= 0 && x <=0 && (x + R) * (x + R) + (y + R) * (y +R) >= R * R || y >= 0 && x > 0 && (x - R) * (x - R) + y * y <= R * R)
1
0 / 0 / 1
Регистрация: 22.02.2018
Сообщений: 31
22.02.2018, 14:40  [ТС] 3
Спасибо. А можно объяснить почему минус для окружности стоит?
Вот тут: (x - R), разве график тогда смещается не в левую часть?
0
Заблокирован
22.02.2018, 14:45 4
потому и минус, что центр смещен вправо
0
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
22.02.2018, 14:46 5
Newbie_MTF, формула окружности: (x-x0)2 + (y-y0)2 = r2
Координаты центра окружности отнимаются от x и y. У нас центр в точке (r, 0). Значит, что?
0
0 / 0 / 1
Регистрация: 22.02.2018
Сообщений: 31
22.02.2018, 15:00  [ТС] 6
Ага, точно. Спасибо.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
22.02.2018, 20:20 7
MansMI, проверьте например точку (-4R;-4R)

Добавлено через 2 минуты
и ноль затерялся:
Цитата Сообщение от MansMI Посмотреть сообщение
x > 0
1
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
22.02.2018, 20:25 8
Newbie_MTF, справедливое замечание! Надо еще проверять для первой фигуры x>=-R и y>=-R
А для второй x>=0
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
22.02.2018, 20:29 9
Цитата Сообщение от _liv_ Посмотреть сообщение
Надо еще проверять для первой фигуры x>=-R и y>=-R
при таком подходе ещё три части как заштрихованная останутся вне условия
0
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
22.02.2018, 20:40 10
Это какие
Цитата Сообщение от Yetty Посмотреть сообщение
три части как заштрихованная останутся вне условия
В чем некорректность кода?
C
1
if (x >=-R && y>=-R && y <= 0 && x <=0 && (x + R) * (x + R) + (y + R) * (y +R) >= R * R || y >= 0 && x >= 0 && (x - R) * (x - R) + y * y <= R * R)
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
22.02.2018, 20:48 11
_liv_, правильно всё у Вас (я ошибся), но x >= 0 вроде излишне
0
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
22.02.2018, 21:01 12
Цитата Сообщение от Yetty Посмотреть сообщение
но x >= 0 вроде излишне
Если будет точка из полукруга, симметричного нашему по оси Y.
Y>=0, и расстояние меньше радиусу

Хотя, нет У нас же центр (R,0)...

Убедили x>=0, действительно, лишнее. Проверкой растояния мы охватываем весь доступный интервал по x
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
22.02.2018, 21:05 13
Цитата Сообщение от _liv_ Посмотреть сообщение
Если будет точка из полукруга, симметричного нашему по оси Y.
она не может быть из такого полукруга, т.к. круг Вы задаёте условием: (x - R) * (x - R) + y * y <= R * R
0
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
22.02.2018, 21:08 14
Newbie_MTF, окончательный вариант:
C
1
if (x >=-R && y>=-R && y <= 0 && x <=0 && (x + R) * (x + R) + (y + R) * (y +R) >= R * R || y >= 0 && (x - R) * (x - R) + y * y <= R * R)
Добавлено через 55 секунд
Цитата Сообщение от Yetty Посмотреть сообщение
она не может быть из такого полукруг
Я уже это осознал
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
22.02.2018, 21:17 15
Цитата Сообщение от _liv_ Посмотреть сообщение
окончательный вариант:
_liv_, в окончательном варианте можно также убрать дублирование проверок точек (-R;0) и (0;-R)
0
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
23.02.2018, 11:44 16
Цитата Сообщение от Yetty Посмотреть сообщение
в окончательном варианте можно также убрать дублирование проверок точек (-R;0) и (0;-R)
Да нет, там ничего лишнего. Проверяем попадание в описывающий I сектор квадрат и попадание за круг.
0
7437 / 5029 / 2892
Регистрация: 18.12.2017
Сообщений: 15,692
23.02.2018, 12:26 17
_liv_, например точка (-R;0) проверяется дважды: x >=-R, y <= 0 и здесь: (x + R) * (x + R) + (y + R) * (y +R) >= R * R
т.е. можно так: x >-R && y>-R и т.д.
0
Эксперт CЭксперт С++
5118 / 4558 / 854
Регистрация: 07.10.2015
Сообщений: 9,462
23.02.2018, 12:39 18
Yetty, оно, конечно, так, но!
Проверять x и -R все равно надо, а какое условие > или >= абсолютно без разницы.
Я смотрю, разумеется, с точки зрения программирования
С точки зрения математики имеем небольшое излишество
Так что, оставим на усмотрение ТС
0
23.02.2018, 12:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
23.02.2018, 12:39
Помогаю со студенческими работами здесь

Определить попадание точки в заштрихованную область
Попадёт ли точка в эту область. Напишите пожалуйста оператор. пожалуйста

Определить попадание произвольной точки в заштрихованную область
Всем привет! Имеется следующая задача: определить попадание произвольной точки в заштрихованную...

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

Определить попадание произвольной точки в закрашенную область
Нужна небольшая помощь с заданием, не особо понимаю как это делать, если можно, то объясните...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru