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

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

Войти
Регистрация
Восстановить пароль
 
хай
2 / 2 / 0
Регистрация: 22.11.2012
Сообщений: 99
#1

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

06.12.2012, 17:53. Просмотров 484. Ответов 12

Нужно дописать условие в оператор If такое чтобы, найти принадлежит ли треугольник началу координат или нет. то есть внутренности треугольника. заранее спасибо.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <iostream>
using namespace std;
#include <clocale>
int main ()
{
    setlocale(LC_ALL, "rus");
    double x1,x2,x3,y1,y2,y3,x,y;
    cout<<"\nВведите x1,x2,x3,y1,y2,y3: разделяя их нажатием клавиши Enter" <<endl;
    cout<<"x1=";cin>>x1;
    cout<<"y1=";cin>>y1;
    cout<<"x2=";cin>>x2;
    cout<<"y2=";cin>>y2;
    cout<<"x3=";cin>>x3;
    cout<<"y3=";cin>>y3;
    x=((x2*y-x1*y-x2*y1+x1*y2)/(y2-y1)); //прямая
    y=((x*y2-x1*y1-x*y1+x2*y1)/(x2-y1)); //прямая
    if ()
    cout<<"Принадлежит началу координат. Потому что хотя бы одна пара Xn и Yn равны нулю" <<endl;
    else
    cout<<"Не принадлежит началу координат. Потому что не одна пара Xn и Yn не равны нулю" <<endl;
    cout<<"\n";
    system ("Pause");
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.12.2012, 17:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Определить, принадлежит ли треугольник началу координат или нет (C++):

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

Определить которая из заданных точек находится ближе к началу координат - C++
Даны 2 точки:А(x1;y1) и В(x2;y2). Составить алгоритм,определяющий которая из точек находится ближе к началу координат.

Определить какая из заданных точек ближе к началу координат, и выдать об этом сообщение - C++
Ввести с клавиатуры координаты трех точек на плоскости а (x1, y1) b (x2, y2) c (x3, y3). Определить какая из заданных точек ближе к началу...

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

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

Определить, принадлежит ли треугольник с заданными вершинами одной полуплоскости - C++
Прямая l, заданная уравнением sx+ty+u=0 разбивает плоскость на две полуплоскости. Точки с координатами (a,b), (c,d) и (e,f) не лежат на...

12
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
06.12.2012, 18:00 #2
Ты хоть что-то у себя понимаешь??? - Что такое прямая. Можно поподробней.
0
хай
2 / 2 / 0
Регистрация: 22.11.2012
Сообщений: 99
06.12.2012, 18:03  [ТС] #3
что тебе не понятно??
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
06.12.2012, 18:05 #4
x=((x2*y-x1*y-x2*y1+x1*y2)/(y2-y1)); //прямая
y=((x*y2-x1*y1-x*y1+x2*y1)/(x2-y1)); //прямая

P.S. Я не понял это. Если ты это не понял, отправь ссылку, откуда брал)))
0
хай
2 / 2 / 0
Регистрация: 22.11.2012
Сообщений: 99
06.12.2012, 18:07  [ТС] #5
Это формула для выведения прямой, если тебе известны только координаты. если тебе это не понятно, то предложи свой вариант.
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
06.12.2012, 18:12 #6
На этом же форуме увидел это:

Реализация - считаются произведения (1, 2, 3 - вершины треугольника, 0 - точка):
(x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0)
(x2 - x0) * (y3 - y2) - (x3 - x2) * (y2 - y0)
(x3 - x0) * (y1 - y3) - (x1 - x3) * (y3 - y0)
Если они одинакового знака, то точка внутри треугольника, если что-то из этого - ноль, то точка лежит на стороне, иначе точка вне треугольника.

Добавлено через 48 секунд
Если не понятно, то сделаю сам)))
0
Kuzia domovenok
1952 / 1805 / 140
Регистрация: 25.03.2012
Сообщений: 6,252
Записей в блоге: 1
06.12.2012, 18:12 #7
Цитата Сообщение от хай Посмотреть сообщение
Это формула для выведения прямой, если тебе известны только координаты. если тебе это не понятно, то предложи свой вариант.
по-моему именно тебе это и не понятно, т.к. это ты откуда-то скопипастил.
0
хай
2 / 2 / 0
Регистрация: 22.11.2012
Сообщений: 99
06.12.2012, 18:12  [ТС] #8
Можешь это мне в программу вписать??
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
06.12.2012, 18:13 #9
Хорошо. Прямо сейчас!!!
0
хай
2 / 2 / 0
Регистрация: 22.11.2012
Сообщений: 99
06.12.2012, 18:16  [ТС] #10
Буду признателен!
0
Kuzia domovenok
1952 / 1805 / 140
Регистрация: 25.03.2012
Сообщений: 6,252
Записей в блоге: 1
06.12.2012, 18:26 #11
C++
1
2
3
4
5
6
7
//C=x1y2-x2y1
bool Oinside(float Ax,float Ay, float Bx, float By, float Cx, float Cy) {
   bool border1=Ax*By>Ay*Bx;     
   bool border2=Bx*Cy>By*Cx; 
   bool border3=Cx*Ay>Cy*Ax;
   return  (border1&&border2&&border3)||((!border1)&&(!border2)&&(!border3)) ;
}
0
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
06.12.2012, 18:27 #12
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
#include <iostream>
 
using namespace std;
 
int main() {
    setlocale(0,"");
    int x0 = 0, y0 = 0, x1, y1, x2, y2, x3, y3;
 
    cout << "Введите координаты 1 точки: ";
    cin >> x1 >> y1;
 
    cout << "Введите координаты 2 точки: ";
    cin >> x2 >> y2;
 
    cout << "Введите координаты 3 точки: ";
    cin >> x3 >> y3;
 
    int tmp1 = (x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0);
    int tmp2 = (x2 - x0) * (y3 - y2) - (x3 - x2) * (y2 - y0);
    int tmp3 = (x3 - x0) * (y1 - y3) - (x1 - x3) * (y3 - y0);
 
    if((tmp1 > 0 && tmp2 > 0 && tmp3 > 0) || (tmp1 < 0 && tmp2 < 0 && tmp3 < 0)) {
        cout << "Внутри треугольника";
    }
 
    else if(tmp1 == 0 || tmp2 == 0 || tmp3 == 0) {
        cout << "На треугольнике";
    }
 
    else {
        cout << "Вне треугольника";
    }
}
Вроде работает не совсем корректно(. Спросите у других)
0
хай
2 / 2 / 0
Регистрация: 22.11.2012
Сообщений: 99
06.12.2012, 18:30  [ТС] #13
так напишите прогу или нет?

Добавлено через 16 секунд
ой спасиб. не увидел
0
06.12.2012, 18:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.12.2012, 18:30
Привет! Вот еще темы с ответами:

Задача с фигурой [принадлежит или нет] - C++
Для задачи 2 записать выражение, зависящее от координат точки X1 и Y1 и принимающее значение TRUE, если точка принадлежит заштрихованной...

Принадлежит ли точка к четверти круга или нет - C++
Помогите создать алгоритм. Принадлежит ли точка к четверти круга или нет (координаты точки &gt; 0)

Найти ближайшую к началу координат точку - C++
#include&lt;stdio.h&gt; int main(void) { char A,B; int x1,y1,x2,y2; printf(&quot;Input A(x1)=&quot;); scanf(&quot;%i&quot;,&amp;x1); ...

Найти какая из точек ближе к началу координат - C++
В чем ошибка? #include &lt;iostream&gt; #include &lt;conio.h&gt; #include &lt;math.h&gt; using namespace std; void main() { ...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Опции темы

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