Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 17, средняя оценка - 4.76
kolonello
4 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 28
#1

Определить принадлежность точки с координатами (x, y) закрашенной области - C++

11.05.2013, 15:49. Просмотров 2582. Ответов 25
Метки нет (Все метки)

помогите разобраться как правильно записать условия попадания точки в заданную область(правильно описать A и B, я разделил фигуру на 2 части)
в геометрии у меня не особо получается разбираться)

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include<iostream.h>
#include<conio.h>
main()
{
system("chcp 1251");
double x,y;
cout<<"Введите координаты точки:"<<endl;
cout<<"x=";
cin>> x;
cout<<"y=";
cin>> y;
int A,B;
A=(x<-7)&&(x<(-1/3)*x-(13/3);
B=(y<4)&&(y>0.75*x+3.25)&&(y<-1.8*x+5.8)
if (A||B)
cout<< "Точка принадлежит заданной области";
else
cout<< "Точка не принадлежит заданной области";
getch();
}
0
Изображения
 
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2013, 15:49
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить принадлежность точки с координатами (x, y) закрашенной области (C++):

Принадлежность точки с заданными координатами заштрихованной области - C++
задание: Разработать программу на языке С++. Даны вещественные числа x и y. Определить, принадлежит ли точка с координатами (x;y)...

Определить, принадлежит ли точка с координатами (х,у) закрашенной области - C++
Определить, принадлежит ли точка с координатами (х,у) закрашенной области

Определить, принадлежит ли заданная точка с координатами X и Y закрашенной области - C++
Задание: 1.1. Определить, принадлежит ли заданная точка с координатами X и Y закрашенной области. Код программы: #include...

Составить программу, которая будет выводить true или false в зависимости от принадлежности точки с координатами x, y закрашенной области - C++
Составить программу, которая будет выводить true или false в зависимости от принадлежности точки с координатами x, y закрашенной области:

Определить принадлежность точки заштрихованной области - C++
Дана точка на плоскости с координатами (х, у). Составить программу, которая выдает одно из сообщ ений «Да», «Нет», «На границе» в...

Определить принадлежность точки заданной области - C++
Добрый день,спасибо что откликнулись на мою просьбу! Дело в том,что мне необходимо сдать программу в понедельник.Тема задания...

25
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
11.05.2013, 16:00 #2
kolonello,http://www.cyberforum.ru/attachment....1&d=1368273467
когда вам даётся точка, выпускайте от неё луч вправо и смотрите сколько сторон треугольника пересечёт. Проверить это легко, просто подставив в уравнение прямой, образованной отрезком, y = ym, где ym - y-овая координата точки и получите уравнение с одной переменной, затем корень уравнения будет (x, ym) и проверяете на принадлежность отрезку. Не забудьте про случай, когда луч пройдёт через вершины.
0
Изображения
 
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
11.05.2013, 16:04 #3
kolonello, вот ещё 1 метод
http://www.cyberforum.ru/cpp-beginne...ead222429.html
0
kolonello
4 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 28
11.05.2013, 16:23  [ТС] #4
а можете помочь решить именно тем способом что я начал? просто преподаватель заест потом вопросами.
у меня сложности только в том как формулами ограничить фигуру
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
11.05.2013, 16:32 #5
kolonello, если честно, я очень сомневаюсь, что ваш метод как то работает

Добавлено через 1 минуту
kolonello, Самый простой способ такой: соединяешь точку с вершинами треугольника, считаешт площадь малеьких треугольников, если сумма площадей равна площади большего трегольника, то точка внутри, иначе снаружи. Площадь, разумеется, лучше считать через определитель. Вот исходник (для простоты считается удвоенная площадь)

Добавлено через 4 минуты
kolonello,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
 
using namespace std;
 
double square(double x1, double y1, double x2, double y2, double x3, double y3) {
    return abs(x2*y3-x3*y2-x1*y3+x3*y1+x1*y2-x2*y1);
}
 
int main(int argc, char* argv[]) {
    double x, y, x1, y1, x2, y2, x3, y3; // x,y = вершины точки, остальное - вершины треугольника
    x1 = 1; y1 = 4;
    x2 = -7; y2 = -2;
    x3 = 7; y3 = -5;
    cin >> x >> y;
    double s = square(x, y, x2, y2, x3, y3) + square(x1, y1, x, y, x3, y3) + square(x1, y1, x2, y2, x, y);
    if (abs(square(x1, y1, x2, y2, x3, y3) - s) <= 1e-9) {
        cout << "YES";
    } else cout << "NO";
    return 0;
}
1
kolonello
4 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 28
11.05.2013, 16:44  [ТС] #6
хмм попробовал запустить эту программу
на строке return abs(x2*y3-x3*y2-x1*y3+x3*y1+x1*y2-x2*y1); - E2015 ambiguity between
c чем это связанно может быть?оО
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
11.05.2013, 20:24 #7
kolonello, в какой среде запускаете ? Такого не должно быть. Во всяком случае я привёл вам рабочий код.
0
kolonello
4 / 0 / 0
Регистрация: 05.06.2011
Сообщений: 28
13.05.2013, 18:17  [ТС] #8
c++ builder 6
если не сложно можешь сделать скрин окна с ответом?
0
badLogic
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 41
13.05.2013, 18:22 #9
Автор напиши функции f(x) которые образуют треугольник, я тебе напишу код.
Цитата Сообщение от Ternsip Посмотреть сообщение
kolonello, Самый простой способ такой: соединяешь точку с вершинами треугольника, считаешт площадь малеьких треугольников, если сумма площадей равна площади большего трегольника, то точка внутри, иначе снаружи. Площадь, разумеется, лучше считать через определитель. Вот исходник (для простоты считается удвоенная площадь)
Это полный бред, делать такую простую задачу таким способом.
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 18:25 #10
badLogic, скажите это его автору
http://******************/forum/topic-...y396640/0.html
0
badLogic
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 41
13.05.2013, 18:28 #11
Ternsip, ну и что? Я же не говорю что это неверный способ. Я делал такую задачу и еще сделал нескольким сокурсницам, делается все это за 5 мин.
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 18:31 #12
badLogic, Молодец, выкладывайте код
0
badLogic
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 41
13.05.2013, 18:47 #13
Треугольник здесь другой, мне влом находить эти функции которые я ранее запросил у автора. но его легко нарисовать в голове:
у= 0;
х = 0;
у = х+3;
Это равнобедренный прямоугольный треугольник который находится в левой верхней части коорд. плоскости.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int _tmain(int argc, _TCHAR* argv[])
{
 
    float x, y;
 
    cin>>x>>y;
 
    if(y>0 && x<0 && ((y-x)<3))
        cout<<"win!";
    else
        cout<<"lose";
 
 
    cin>>x;
 
    return 0;
}
if(y>0 && x<0 && ((y-x)<3))
если делать сравнени >= то линии описывающие треугольник войдут в площадь
0
Ternsip
660 / 188 / 6
Регистрация: 10.05.2012
Сообщений: 595
13.05.2013, 19:04 #14
badLogic, вот на этих тестах у вас не работает
-1.000 2.000
3.000 -2.000
-6.000 -2.000
0.000 -1.000
0.000 0.000
3.000 -2.000
1.000 -2.000
3.000 -4.000
0.000 -1.000
-4.000 0.000
5.000 -3.000

Добавлено через 4 минуты
badLogic, кстати на тесте 0 0 даже loose выдаёт
0
badLogic
1 / 1 / 0
Регистрация: 10.04.2013
Сообщений: 41
13.05.2013, 19:08 #15
если делать сравнени >= то линии описывающие треугольник войдут в площадь, ну как так можно было не догодаться..
C++
1
if(y>=0 && x>=0 && ((y-x)<=3))
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.05.2013, 19:08
Привет! Вот еще темы с ответами:

Определить принадлежность точки заданной области - C++
Задание: Разработать программу, которая в ответ на вводимую с клавиатуры пару вещественных чисел, представляющих собой координаты...

Определить принадлежность точки заданной области - C++
Всем привет! Помогите пожалуйста с программой, задание ниже. Ребят напишите её не сложными командами, только начал проходить с++ и многого...

Определить принадлежность точки заданной области - C++
первый день программирую, поэтому мало чего понимаю. определите значение логического выражения, утверждающего, что точка х,у...

Определить принадлежность точки заштрихованной области - C++
По заданным координатам точки определить, где находится точка: 1) внутри заштрихованной области; 2) вне заштрихованной области; 3) на...


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

Или воспользуйтесь поиском по форуму:
15
Yandex
Объявления
13.05.2013, 19:08
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru