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

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

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.74
пока что чайник
1 / 1 / 0
Регистрация: 15.02.2011
Сообщений: 41
#1

Даны четыре точки А1(x1, y1), А2(x2, y2), А3(x3, y3), А4(x4, y4). Определить будут ли они вершинами параллелограмма. - C++

27.02.2011, 16:50. Просмотров 3775. Ответов 5
Метки нет (Все метки)

Даны четыре точки А1(x1, y1), А2(x2, y2), А3(x3, y3), А4(x4, y4). Определить будут ли они вершинами параллелограмма.(помогите пожалуйста,не могу сделать)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.02.2011, 16:50
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Даны четыре точки А1(x1, y1), А2(x2, y2), А3(x3, y3), А4(x4, y4). Определить будут ли они вершинами параллелограмма. (C++):

Диагонали (Четыре точки являются вершинами параллелограмма. Определить длину диагоналей и найти координаты ) - C++
Помогите!!! Четыре точки A(x1; y1), B(x2; y2), C(x3; y3), D(x4; y4) являются вершинами параллелограма. Определить длину диагоналей и...

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

Даны четыре точки. Определить, являются ли они вершинами параллелограмма - Free Pascal
Помогите решить. Даны четыре точки A1(x1, y1), A2(x2, y2), A3(x3, y3), A4(x4, y4). Определить, будут ли они вершинами параллелограмма.

Даны четыре точки A1(x1,y1), A2(x2,y2), A3(x3,y3), A4(x4,y4). Определить, будет ли они вершинами параллелограмма - VBA
Помогите пожалуйста! Даны четыре точки A1(x1,y1), A2(x2,y2), A3(x3,y3), A4(x4,y4). Определить, будет ли они вершинами параллелограмма

Записать определение функции Y(s) (где s – исход-ный список), выясняющей, будут ли эти точки вершинами параллелограмма. - Lisp
Помогите мне пожалуйста ещё несколько задач: 1.Дан список ((х1 у1) (x2 у2) (x3 у3) (х4 у4)). Каждый его подсписок является коор-динатами...

Определить, будут ли координаты заданных точек вершинами параллелограмма - C (СИ)
Ввести координаты четырех точек А1(х1, у1), А2(x2 ,у2), А3(x3 , у3), А4(х4, у4). Определить, будут ли они вершинами...

5
Ma3a
Эксперт С++
619 / 463 / 31
Регистрация: 28.01.2011
Сообщений: 605
27.02.2011, 16:58 #2
Можно брать векторы вида {x2 - x1, y2 - y1} ... по сторонам этой фигуры и смотреть модули попарных векторных произведений, полагая третью координату нулем у исходных векторов.
0
IrineK
Заблокирован
27.02.2011, 17:10 #3
Жестоко.
Достаточно проверить, что противоположные стороны попарно равны.
1
hepr
61 / 33 / 5
Регистрация: 21.10.2010
Сообщений: 538
27.02.2011, 17:27 #4
Цитата Сообщение от IrineK Посмотреть сообщение
Жестоко.
Достаточно проверить, что противоположные стороны попарно равны.
+1, а саму сторону вычислить по Sqrt((x1-x2)^2+(y1-y2)^2)(по-моему, точно не помню)
0
Ma3a
Эксперт С++
619 / 463 / 31
Регистрация: 28.01.2011
Сообщений: 605
27.02.2011, 17:29 #5
Естественно, просто сказал первую мысль , что пришла в голову
0
IrineK
Заблокирован
28.02.2011, 00:05 #6
Цитата Сообщение от IrineK Посмотреть сообщение
Достаточно проверить, что противоположные стороны попарно равны.
Проверяем:

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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <iostream>
#include <math.h>
using namespace std;
 
//длина стороны АВ
double side(double xa, double ya, double xb, double yb)
{return sqrt((xb-xa)*(xb-xa)+(yb-ya)*(yb-ya));}
 
//отклонение С от АВ
double deviation(double x1, double y1, double x2, double y2, double x3, double y3)
{
    double r=side(x1,y1,x2,y2);
    double A=(y2-y1)/r;
    double B=(x2-x1)/r;
    double C=(x1*(y2-y1)-y1*(x2-x1))/r;
    return (x3*A-y3*B-C);
}
 
int main()
{
setlocale(LC_ALL, "");
double x[4],y[4];
int i,j, yes=0;
 
cout<<"Введите координаты точек\n";
for(i=0;i<4;i++)
{
    cout<<"x["<<i+1<<"] = ";
        cin>>x[i];
    cout<<"y["<<i+1<<"] = ";
        cin>>y[i];
}
 
//Проверка на совпадение двух точек
for(i=0;i<3;i++)
    for(j=i+1;j<4;j++)
        if(side(x[i],y[i],x[j],y[j])==0) 
            {   cout<<"Две точки совпадают\n";
                system("pause");
                return 0;
            }
//Проверка на находжение трех точек на одной прямой
double dev12_3 = deviation(x[0],y[0],x[1],y[1],x[2],y[2]);
double dev12_4 = deviation(x[0],y[0],x[1],y[1],x[3],y[3]);
double dev23_4 = deviation(x[1],y[1],x[2],y[2],x[3],y[3]);
double dev13_4 = deviation(x[0],y[0],x[2],y[2],x[3],y[3]);
if(dev12_3==0 || dev12_4==0 || dev23_4==0 || dev13_4==0)
        {   cout<<"Три точки лежат на одной прямой\n";
            system("pause");
            return 0;
        }
 
cout<<"Множество точек образует четырехугольник\n";
system("pause");
 
//определяем диагональ, проходящую через А1
//если А1А2 - диагональ, попарные стороны "А1А3/А2А4" "А2А3/А1А4"
//если А1А3 - диагональ, попарные стороны "А1А2/А3А4" "А2А3/А1А4"
//если А1А4 - диагональ, попарные стороны "А1А2/А3А4" "А2А4/А1А3"
 
double dev13_2 = deviation(x[0],y[0],x[2],y[2],x[1],y[1]);
 
if(dev12_3*dev12_4<0) //диагональ 12
    {if(side(x[0],y[0],x[2],y[2])==side(x[1],y[1],x[3],y[3]) && side(x[1],y[1],x[2],y[2])==side(x[0],y[0],x[3],y[3])) yes++;}
else 
{
    if(dev13_2*dev13_4<0) //диагональ 13
        {if(side(x[0],y[0],x[1],y[1])==side(x[2],y[2],x[3],y[3]) && side(x[1],y[1],x[2],y[2])==side(x[0],y[0],x[3],y[3])) yes++;}
    else  //диагональ 14
        {if(side(x[0],y[0],x[1],y[1])==side(x[2],y[2],x[3],y[3]) && side(x[0],y[0],x[2],y[2])==side(x[1],y[1],x[3],y[3])) yes++;}
}
 
if(yes)
    cout<<"\nЭто - параллелограмм\n";
else
    cout<<"\nЭто - не параллелограмм\n";
 
system("pause");
 
return 0;
}
Ну, и все.
2
28.02.2011, 00:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.02.2011, 00:05
Привет! Вот еще темы с ответами:

Даны три точки. Определить, будут ли они расположены на одной прямой. Если нет, то вычислить угол - MS Excel
Даны три точки А(х1, у1);В(х2, у2);С(х3, у3). Определить, будут ли они расположены на одной прямой. Если нет, то вычислить угол САВ.

Три точки заданы своими координатами на плоскости. Найдите площадь параллелограмма, вершинами которого они являются. - Delphi
Помогите, пожалуйста, решить задачу на языке делфи: Заранее очень благодарна за оказанную вами помощь!:)

Определить по координатам точек, являются ли они вершинами параллелограмма - Pascal ABC
Доброго времени суток программисты! Вот такая задачка вызвала затруднение: С клавиатуры вводятся четыре пары координат точек в...

Четыре точки на плоскости задаются своими координатами. Проверить, могут ли они являться вершинами квадрата. - VBA
Здравствуйте.. Помогите решить задачу. Четыре точки на плоскости задаются своими координатами. Прове- рить, могут ли они являться...


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

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

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