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

Принадлежит ли начало координат треугольнику - C++

Восстановить пароль Регистрация
 
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
21.11.2012, 22:22     Принадлежит ли начало координат треугольнику #1
Даны действительные числа x1,x2,x3,y1,y2,y3;
Принадлежит ли начоло координат треугольнику с вершинами (x1,y1),(x2,y2),(x3,y3);
первый ступор у меня на вопросе как задать координаты точками?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.11.2012, 22:22     Принадлежит ли начало координат треугольнику
Посмотрите здесь:

C++ Треугольник задан вершинами (x1,y1), (x2,y2), (x3,y3). Принадлежит ли заданная точка (x,y) указанному треугольнику.
Принадлежит ли начало координат треугольнику с вершинами C++
C++ принадлежит ли точка с координатами (x, y) треугольнику
C++ Принадлежит ли начало координат треугольнику с вершинами
Определить принадлежит ли точка треугольнику C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11838 / 6817 / 771
Регистрация: 27.09.2012
Сообщений: 16,909
Записей в блоге: 2
Завершенные тесты: 1
21.11.2012, 22:25     Принадлежит ли начало координат треугольнику #2
Подтолкну в тему
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4924 / 2667 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
21.11.2012, 22:31     Принадлежит ли начало координат треугольнику #3
Способ первый:
C++
1
2
3
typedef std::pair <int, int> Point;
 
Point point(1, 2);
Способ второй:
C++
1
2
3
4
5
6
struct Point
{
    int x, y;
};
 
Point point {1, 2}; // использует список инициализации
Способ третий:
C++
1
2
3
4
5
6
7
struct Point
{
    Point(int x, int y): _x(x), _y(y) {}
    int _x, _y;
};
 
Point point (1, 2);
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
21.11.2012, 22:31  [ТС]     Принадлежит ли начало координат треугольнику #4
bool foo(point p[]) а что значит эта строчка?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4924 / 2667 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
21.11.2012, 22:32     Принадлежит ли начало координат треугольнику #5
Цитата Сообщение от Ihor3 Посмотреть сообщение
bool foo(point p[]) а что значит эта строчка?
функция foo принимает в качестве параметра массив структурных элементов типа point и возвращает булевую переменную
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
21.11.2012, 23:00  [ТС]     Принадлежит ли начало координат треугольнику #6
это было написано до того как я прочел ваш коментарий. Попробую 3 способом

Добавлено через 23 минуты
а в кокой библиотеке struct?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4924 / 2667 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
21.11.2012, 23:15     Принадлежит ли начало координат треугольнику #7
Цитата Сообщение от Ihor3 Посмотреть сообщение
это было написано до того как я прочел ваш коментарий. Попробую 3 способом

Добавлено через 23 минуты
а в кокой библиотеке struct?
Это часть синтаксиса языка, она не требует библиотек.
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
21.11.2012, 23:15  [ТС]     Принадлежит ли начало координат треугольнику #8
а проще ету програму никак не написать?
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4924 / 2667 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
21.11.2012, 23:20     Принадлежит ли начало координат треугольнику #9
Что в вашем понимании проще? Без структур? Так рано или поздно их придется пройти. Со структурами код удобней, каждая точка живет как отдельная переменная. Можете назвать координаты x1, y1, x2, y2, ... если вам так удобнее. В коде по ссылке решена задача, дан алгоритм. По другому его не решишь, а реализация возможна различна.
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
21.11.2012, 23:27  [ТС]     Принадлежит ли начало координат треугольнику #10
просто многого не понимаю... немного розобрался с этим кодом но под свой перобатывать непонимаю как

Добавлено через 1 минуту
вы можете закоментировать строчке в програме которая по сылке
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4924 / 2667 / 243
Регистрация: 29.11.2010
Сообщений: 7,421
21.11.2012, 23:57     Принадлежит ли начало координат треугольнику #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
#include <iostream>
 
struct point // объявляем структуру point, имеющую два поля x и y типа double
{
    double x; // обращение к элементу поля будет такое: point_name.x
    double y; // обращение к элементу поля будет такое: point_name.y
};
 
bool foo(point p[]) // функция foo принимает в качестве параметра массив структурных элементов типа point и возвращает булевую переменную
{
    int a = (p[1].x - p[0].x) * (p[2].y - p[1].y) * (p[1].y - p[0].y), 
    b = (p[2].x - p[0].x) * (p[3].y - p[2].y) * (p[2].y - p[0].y),
    c = (p[3].x - p[0].x) * (p[1].y - p[2].y) * (p[3].y - p[0].y);
 
    return (a >= 0 && b >= 0 && c >= 0) ||
                (a <= 0 && b <= 0 && c <= 0)? 1 : 0; // возвращаем истину, если все стороны больше, либо равны 0, либо меньше или равны нулю. Иначе возвращаем ложь
// этот кусок кода можно оформит лучше, все такие вместо 1 true, вместо 0 false было бы осмысленнее,
// а еще лучше возвратить результат выражения ( (a >= 0 && b >= 0 && c >= 0) || (a <= 0 && b <= 0 && c <= 0) )
}
 
bool prov(point p[]) // функция проверки, является ли нашь треуг. треугольником вобще
{
    return p[1].x == p[2].x && p[2].x == p[3].x? 0 : // если p[1].x == p[2].x && p[2].x == p[3].x то возвращаем истину, иначе 
                p[1].y == p[2].y && p[2].y == p[3].y? 0 : 1; если p[1].y == p[2].y && p[2].y == p[3].y истину, иначе ложь
}
 
int main()
{
    const size_t n = 4;
    point p[n];
 
    std::cout << "\n\nEnter coord point: ";
    for(size_t i = 0; i < n; ++i)
    {
        if(i > 0)
            std::cout << "\n\nEnter tringale coord " << i << ": ";
 
        std::cout << "\n\nx" << i << " -> ";
        std::cin >> p[i].x;
        std::cout << "\n\ny" << i << " -> ";
        std::cin >> p[i].y;
    }
 
    if(prov(p))
    {
        if(foo(p))
           std::cout << "\n\tYes" << std::endl;
 
        else
           std::cout << "\n\tNo" << std::endl;
    }
 
    else
        std::cout << "\n\tTringale not found" << std::endl;
 
    return 0;
}
Используется тернарный оператор. Прогуглите, фактически он сводится к if else конструкции. Дальше комментить не могу, до сдачи работы по матану 9 часов, а у меня заданий сделано 2/10 своих)
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
22.11.2012, 00:04  [ТС]     Принадлежит ли начало координат треугольнику #12
правильно ли я понимаю то что чтобы вершина треугольника совпадала из началом координат необходимо чтобы и ее координиты были(0,0)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.11.2012, 12:14     Принадлежит ли начало координат треугольнику
Еще ссылки по теме:

Определить, принадлежит ли данная точка треугольнику C++
Даны действительные числа x1 , x2 , x3 , y1 , y2 , y3 . Принадлежит ли начало координат треугольнику с вершинами (x1,y1), (x2,y2), (x3, y3)? C++
C++ Определить принадлежит ли точка треугольнику

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

Или воспользуйтесь поиском по форуму:
asidorchenko
379 / 205 / 25
Регистрация: 09.04.2012
Сообщений: 635
23.11.2012, 12:14     Принадлежит ли начало координат треугольнику #13
Пусть прямая l определяется http://www.cyberforum.ru/cgi-bin/latex.cgi?Ax+By+C=0
Теорема: Точки http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{1} ({x}_{1},{y}_{1}) и http://www.cyberforum.ru/cgi-bin/latex.cgi?{M}_{2} ({x}_{2},{y}_{2}) принадлежат разным полуплоскостям относительно прямой l тогда и только тогда, когда http://www.cyberforum.ru/cgi-bin/latex.cgi?(A{x}_{1}+B{y}_{1}+C)(A{x}_{2}+B{y}_{2}+C) <0

Точка находится внутри треугольника, если для любых двух вершин треугольника оставшаяся вершина и проверяемая точка лежат в одной полуплоскости относительно прямой, проходящей через эти две вершины.
Yandex
Объявления
23.11.2012, 12:14     Принадлежит ли начало координат треугольнику
Ответ Создать тему
Опции темы

Текущее время: 15:33. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru