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

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

Войти
Регистрация
Восстановить пароль
 
 
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
#1

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

15.12.2012, 22:43. Просмотров 672. Ответов 18
Метки нет (Все метки)

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
#include<iostream.h>
#include<conio.h>
#include<math.h>
int main()
{
float x1,x2,x3;
float y1,y2,y3;
printf(" \n vvedit koordunatu \n", x1,x2,x3,y1,y2,y3);
scanf("%lf",&x1);
scanf("%lf",&x2);
scanf("%lf",&x3);
scanf("%lf",&y1);
scanf("%lf",&y2);
scanf("%lf",&y3);
if (x1==x2==x3 || y1==y2==y3)
printf("nevirni koordunatu");
int x=0, y=0;
int s1,s2,s3;
s1=(x2-x1)&&(y2-y1);
    printf("s1=%lf",s1);
s2=(x3-x2)&&(y3-y2);
printf("s2=%lf",&s2);
s3=(x3-x1)&&(y3-y1);
printf(" \n s3=%lf",s3);
if (s1<=x)&&(s2<=y2)
printf("\n popadaet");
else
if
 
getch();
return 0;
}
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2012, 22:43
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Принадлежит ли начало треугольника координатам (C++):

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

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

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

Найти стороны треугольника по координатам - C++
Помогите найти ошибку #include &lt;iostream&gt; #include &lt;cmath&gt; #include &lt;cstdio&gt; using namespace std; int main() { int...

Вычисление площади треугольника по координатам x,y - C++
Привет, задали написать программу вычислить площади треугольника по координатам..данные координат берутся из файла и конечный результат...

Определить вид треугольника по координатам вершин - C++
Задача 2 : Задача на строки. Даны координаты трех точек на плоскости. Если они могут быть вершинами треугольника, определите его вид(...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
sovaz1997
CEO SOVAZ Corp.
380 / 226 / 2
Регистрация: 17.12.2011
Сообщений: 819
Записей в блоге: 1
Завершенные тесты: 1
15.12.2012, 22:44 #2
В чем вопрос???
1
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
15.12.2012, 23:38  [ТС] #3
я незнаю что я делал ну конкретно я не знаю как задать треугольник. а потом как проверять входит ли начала координат в его плоскость или нет

Добавлено через 39 минут
обясниш как можно проще?
1
Gus
24 / 35 / 2
Регистрация: 17.02.2009
Сообщений: 364
15.12.2012, 23:45 #4
допустим дана плоскость. ограниченная двумя координатами
[x1;y2][x2;y2] (прямоугольный параллелепипед дай бог если правильно написал)

и даны 3 координаты ребер треугольника, сравниваешь координаты. лежит ли какая либо из 3 координат треугольника на этой плоскости или нет.
1
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
15.12.2012, 23:48  [ТС] #5
мне нужно чтобы начало координат принадлежало треугольныку
0
Gus
24 / 35 / 2
Регистрация: 17.02.2009
Сообщений: 364
15.12.2012, 23:52 #6
Тогда поясните слово начало треугольника. (основание или что) , и какой это треугольник, прямоугольный или?

Добавлено через 1 минуту
Хотя фантазируйте, если хотите что бы какая та часть треугольника была вписана в плоскость, то... какие то координаты углов должны пренадлежать множеству плоскости)
1
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
16.12.2012, 00:05  [ТС] #7
упс в меня ошибка в названеи темы начало координат(точка 0;0) входит ли она в плоскостьтреугольника вершины которого заданы координатами
0
Gus
24 / 35 / 2
Регистрация: 17.02.2009
Сообщений: 364
16.12.2012, 00:37 #8
Как проверить принадлежит ли точка треугольнику?
1
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
16.12.2012, 00:44  [ТС] #9
Gus, спасиба большое
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,926
16.12.2012, 01:56 #10
Вот, как можно проще сделал:
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
58
59
#include <iostream>
#include <cmath>
 
struct Point
{
    int x;
    int y;
};
 
bool isTriangle(Point *);
bool pointInside(Point *, Point);
 
int main()
{
    Point point; // координаты точки
    Point vertex[3]; // координаты вершин
 
    std::cout << "Enter x coord of point: ";
    std::cin >> point.x;
    std::cout << "Enter y coord of point: ";
    std::cin >> point.y;
    for (int i=0; i < 3; i++)
    {
        std::cout << "Enter x coord of " << i + 1 << " vertex: ";
        std::cin >> vertex[i].x;
        std::cout << "Enter y coord of " << i + 1 << " vertex: ";
        std::cin >> vertex[i].y;
    }
 
    if (!isTriangle(vertex)) // если не треугольник
        std::cout << "Points don't form a triangle" << std::endl;
    else if (pointInside(vertex, point)) // если треугольник и точка внутри
        std::cout << "Point inside" << std::endl;
    else //если треугольник и точка снаружи
        std::cout << "Point outside" << std::endl;
 
    return 0;
}
 
bool isTriangle(Point *v)
{
    // рассчитываем стороны
    double A = sqrt(pow(v[0].x - v[1].x, 2) + pow(v[0].y - v[1].y, 2));
    double B = sqrt(pow(v[1].x - v[2].x, 2) + pow(v[1].y - v[2].y, 2));
    double C = sqrt(pow(v[2].x - v[0].x, 2) + pow(v[2].y - v[0].y, 2));
    // если одна из сторон больше либо равна двум другим возвращаем ложь
    if ((A + B <= C) || (A + C <= B) || (B + C <= A))
        return false;
    else
        return true;
}
 
bool pointInside(Point *v, Point p)
{
    int a = (v[0].x - p.x) * (v[1].y - v[0].y) - (v[1].x - v[0].x) * (v[0].y - p.y);
    int b = (v[1].x - p.x) * (v[2].y - v[1].y) - (v[2].x - v[1].x) * (v[1].y - p.y);
    int c = (v[2].x - p.x) * (v[0].y - v[2].y) - (v[0].x - v[2].x) * (v[2].y - p.y);
    return ((a >= 0 && b >= 0 && c >= 0) || (a <= 0 && b <= 0 && c <= 0));
}
1
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
16.12.2012, 14:45  [ТС] #11
не знаю, point ето уже класы ,я думал ее как то проще можно зделать
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,926
17.12.2012, 19:37 #12
Ihor3, Point это структура и это как раз облегчает использование. Можно воспринимать как объект, имеющий поля x и y, навроде реальной точки.
1
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
24.12.2012, 01:10  [ТС] #13
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
#include<iostream.h>
#include<conio.h>
#include<math.h>
int main()
{
float x1,x2,x3;
float y1,y2,y3;
printf(" \n vvedit koordunatu \n", x1,x2,x3,y1,y2,y3);
scanf("%lf",&x1);
scanf("%lf",&x2);
scanf("%lf",&x3);
scanf("%lf",&y1);
scanf("%lf",&y2);
scanf("%lf",&y3);
int ptestx=0;
int ptesty=0;
 
  int a =  (P1.X - PTest.X) * (P2.Y - P1.Y) - (P2.X - P1.X) * (P1.Y - PTest.Y);
  int b = (P2.X - PTest.X) * (P3.Y - P2.Y) - (P3.X - P2.X) * (P2.Y - PTest.Y);
  int c = (P3.X - PTest.X) * (P1.Y - P3.Y) - (P1.X - P3.X) * (P3.Y - PTest.Y);
 
  if ((a >= 0 && b >= 0 && c >= 0) || (a <= 0 && b <= 0 && c <= 0))
    return TRUE;
  else
    return FALSE;
}
 
getch();
return 0;
}
папробовал переделать под С но не работает, с математитчной точки зрения я понял эту задачу но в програме не совсем не доделаете плз на С
0
MrGluck
Модератор
Эксперт CЭксперт С++
7239 / 4407 / 642
Регистрация: 29.11.2010
Сообщений: 11,926
24.12.2012, 02:58 #14
Ihor3, специально для вас перевел на С свою программу (практически одни вводы/выводы заменил).

Принадлежит ли точка треугольнику (С)
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
58
59
60
#include <stdio.h>
#include <math.h>
 
typedef struct
{
    int x;
    int y;
} Point;
 
int isTriangle(Point *);
int pointInside(Point *, Point);
 
int main()
{
    Point point; /* координаты точки */
    Point vertex[3]; /* координаты вершин */
    int i;
 
    printf("Enter x coord of point: ");
    scanf("%d", &point.x);
    printf("Enter y coord of point: ");
    scanf("%d", &point.y);
    for (i=0; i < 3; i++)
    {
        printf("Enter x coord of %d vertex: ", i + 1);
        scanf("%d", &vertex[i].x);
        printf("Enter y coord of %d vertex: ", i + 1);
        scanf("%d", &vertex[i].y);
    }
 
    if (!isTriangle(vertex)) /* если не треугольник */
        printf("Points don't form a triangle\n");
    else if (pointInside(vertex, point)) /* если треугольник и точка внутри */
        printf("Point inside\n");
    else /* если треугольник и точка снаружи */
        printf("Point outside\n");
 
    return 0;
}
 
int isTriangle(Point *v)
{
    /* рассчитываем стороны */
    double A = sqrt(pow(v[0].x - v[1].x, 2) + pow(v[0].y - v[1].y, 2));
    double B = sqrt(pow(v[1].x - v[2].x, 2) + pow(v[1].y - v[2].y, 2));
    double C = sqrt(pow(v[2].x - v[0].x, 2) + pow(v[2].y - v[0].y, 2));
    /* если одна из сторон больше либо равна двум другим возвращаем ложь */
    if ((A + B <= C) || (A + C <= B) || (B + C <= A))
        return 0;
    else
        return 1;
}
 
int pointInside(Point *v, Point p)
{
    int a = (v[0].x - p.x) * (v[1].y - v[0].y) - (v[1].x - v[0].x) * (v[0].y - p.y);
    int b = (v[1].x - p.x) * (v[2].y - v[1].y) - (v[2].x - v[1].x) * (v[1].y - p.y);
    int c = (v[2].x - p.x) * (v[0].y - v[2].y) - (v[0].x - v[2].x) * (v[2].y - p.y);
    return ((a >= 0 && b >= 0 && c >= 0) || (a <= 0 && b <= 0 && c <= 0));
}
1
Ihor3
3 / 3 / 1
Регистрация: 14.11.2012
Сообщений: 235
24.12.2012, 11:33  [ТС] #15
ввожу все координаты точек, но не пишет входит или не входит
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2012, 11:33
Привет! Вот еще темы с ответами:

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

Вычисление периметра треугольника по заданным координатам вершин - C++
Добрый день, по такому условию &quot; Составить программу, которая вычисляет периметр треугольника, если заданы координаты вершин ....

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

По заданным координатам вершин треугольника найти стороны и площадь - C++
По заданным координатам вершин треугольника найти стороны и площадь.


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

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

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