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

Точки на плоскости. - C++

Восстановить пароль Регистрация
 
ruporing
0 / 0 / 0
Регистрация: 13.02.2012
Сообщений: 17
18.02.2012, 17:43     Точки на плоскости. #1
Заданы три точки на плоскости: M с координатами (x1,y1), L с координатами (x2,y2) и H с координатами (x3,y3). Определите, лежат ли они на одной прямой. При отрицательном ответе найти площадь и периметр треугольника MLH.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.02.2012, 17:43     Точки на плоскости.
Посмотрите здесь:

C++ Координаты точки на плоскости
C++ Точки на плоскости
точки на плоскости C++
C++ Точки на плоскости
Принадлежность точки к заданой плоскости C++
Поиск точки на координатной плоскости C++
структура точки в плоскости C++
C++ Определение точки в плоскости

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Xind
275 / 148 / 7
Регистрация: 05.11.2011
Сообщений: 425
Записей в блоге: 1
18.02.2012, 20:15     Точки на плоскости. #2
Цитата Сообщение от ruporing Посмотреть сообщение
Заданы три точки на плоскости: M с координатами (x1,y1), L с координатами (x2,y2) и H с координатами (x3,y3). Определите, лежат ли они на одной прямой. При отрицательном ответе найти площадь и периметр треугольника MLH.
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
#include <iostream>
#include <cmath>
 
using namespace std;
 
int main()
{
   const int n = 3;
   double x[n], y[n], det = 0.0;
 
   for (int i = 0; i < n; i++)
   {
      cout << "x" << i+1 << ":";
      cin >> x[i];
      cout << "y" << i+1 << ":";
      cin >> y[i];
   }
 
   det = x[0] * y[1] - x[0] * y[2] -
         y[0] * x[1] + y[0] * x[2] +
         x[1] * y[2] - y[1] * x[2];
 
   if (det != 0)
   {
      double S, p, a, b, c;
      a = sqrt(pow(y[1]-y[0],2.0) + pow(x[1]-x[0], 2.0));
      b = sqrt(pow(y[2]-y[1],2.0) + pow(x[2]-x[1], 2.0));
      c = sqrt(pow(y[0]-y[2],2.0) + pow(x[0]-x[2], 2.0));
 
      S = fabs((x[1]-x[0]) * (y[2]-y[0]) - (x[2]-x[0]) * (y[1]-y[0])) / 2.0;
      p = a + b + c;
 
      cout << "Plowad' treugol'nika: " << S << endl;
      cout << "Perimetr treugol'nika:" << p << endl;
   }
   else
   {
      cout << "Tochki lezhat na odnoj prjamoj." << endl;
   }
 
   return 0;
}
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
18.02.2012, 20:25     Точки на плоскости. #3
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
#include <iostream>
#include <cmath>
////////////////////////////////////////////////////////////////////////////////
template <class T>
T sqr(const T& num)
{
    return num * num;
}
////////////////////////////////////////////////////////////////////////////////
struct Point
{
    double x;
    double y;
};
////////////////////////////////////////////////////////////////////////////////
std::istream& operator >> (std::istream& stream, Point& p)
{
    stream >> p.x >> p.y;
    return stream;
}
////////////////////////////////////////////////////////////////////////////////
double distance(const Point& p1, const Point& p2)
{
    return std::sqrt(sqr(p1.x - p2.x) + sqr(p1.y - p2.y));
}
////////////////////////////////////////////////////////////////////////////////
class Triangle
{
    Point _p1, _p2, _p3;
    double _a, _b, _c;
////////////////////////////////////////////////////////////////////////////////
public:
    Triangle(const Point& p1, const Point& p2, const Point& p3):
        _p1(p1), _p2(p2), _p3(p3),
        _a(distance(p1, p2)), _b(distance(p2, p3)), _c(distance(p3, p1))
    {
        
    }
    ////////////////////////////////////////////////////////////////////////////
    const double square() const
    {
        double p = (_a + _b + _c) / 2.;
        return std::sqrt(p * (p - _a) * (p - _b) * (p - _c));
    }
    ////////////////////////////////////////////////////////////////////////////
};
////////////////////////////////////////////////////////////////////////////////
int main()
{
    Point   p1,
            p2,
            p3;
 
    std::cin    >>  p1  >>  p2  >>  p3;
 
    Triangle    t(p1, p2, p3);
 
    std::cout   <<  t.square() << std::endl;
    
    return 0;
}
Отловите случай, когда square = 0
Yandex
Объявления
18.02.2012, 20:25     Точки на плоскости.
Ответ Создать тему
Опции темы

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