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

Вывести расстояние от заданной точки до точки пересечения диагоналей прямоугольников - C++

Восстановить пароль Регистрация
 
muryj
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 6
03.06.2013, 18:06     Вывести расстояние от заданной точки до точки пересечения диагоналей прямоугольников #1
Прямоугольники заданы координатами их вершин.
1)Вывести расстояние от заданной точки до точки пересечения диагоналей.
2) Вывести координаты вершин прямоугольника, в котором расстояние от заданной точки, до точки пересечения диагоналей есть найменьшим.
Вот такую задачу задали в колледже, только начали изучать с++, как делать не представляю, а сдать нужно до вторника, буду благодарен за помощь.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.06.2013, 18:06     Вывести расстояние от заданной точки до точки пересечения диагоналей прямоугольников
Посмотрите здесь:

точки пересечения C++
Точки пересечения окружности и прямой C++
Как найти координаты точки на прямой удаленной от заданной точки на х C++
C++ Отсортировать и вывести точки по удаленности от некоторой заданной точки
Задача (вывести длину кратчайшего пути от точки до точки.) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
tony_pershin
16 / 16 / 1
Регистрация: 05.03.2013
Сообщений: 36
03.06.2013, 18:44     Вывести расстояние от заданной точки до точки пересечения диагоналей прямоугольников #2
Второй пункт не очень понятен, можете разъяснить? Правильно ли я понимаю, что это случай, когда точка совпадает с центром прямоугольника? В таком случае прямоугольников бесконечное множество.
Решение для первого пункта:
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 <cmath>
#include <iostream>
 
using namespace std;
int main()
{
    double x1, x2, y1, y2, dx, dy, gx, gy;
    // Rectangle coordinates
    cin << x1;
    cin << x2;
    cin << y1;
    cin << y2;
    // Given point coordinates
    cin << gx;
    cin << gy;
    // Rectangle center coordinates
    dx = (x1+x2)/2;
    dy = (y1+y2)/2;
    
    cout << "Distance is " << sqrt( (dx-gx)*(dx-gx) + (dy-gy)*(dy-gy) ); 
    
    return 0;
}
muryj
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 6
03.06.2013, 19:06  [ТС]     Вывести расстояние от заданной точки до точки пересечения диагоналей прямоугольников #3
Я так понимаю, что нужно ввести несколько прямоугольников и потом вывести координаты вершин того из них, у которого расстояние до точки пересечения диагоналей найменьшее.
tony_pershin
16 / 16 / 1
Регистрация: 05.03.2013
Сообщений: 36
03.06.2013, 23:02     Вывести расстояние от заданной точки до точки пересечения диагоналей прямоугольников #4
Как-то я немного криво написал, сейчас нормально сделал.
Первая задача:
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
#include <cmath>
#include <iostream>
 
using namespace std;
struct Point
{
    Point( const double& px = 0., const double& py = 0. ) : x(px), y(py) {}
 
    double x, y;
};
 
struct Rectangle
{
    Point ltPoint; // left top point
    Point rbPoint; // right bottom point
 
    Point GetCenterPoint()
    {
        return Point( (ltPoint.x + rbPoint.x)/2, (ltPoint.y + rbPoint.y)/2 );
    }
};
 
double GetDistance( double x1, double x2, double y1, double y2 )
{
    return ::sqrt( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) );
}
 
int main()
{
    Rectangle rect;
    double gx;
    double gy;
 
    cout << "Enter X-coord of left top point: ";
    cin >> rect.ltPoint.x;
    cout << "Enter Y-coord of left top point: ";
    cin >> rect.ltPoint.y;
    cout << "Enter X-coord of right bottom point: ";
    cin >> rect.rbPoint.x;
    cout << "Enter Y-coord of right bottom point: ";
    cin >> rect.rbPoint.y;
    cout << "Enter X-coord of researched point: ";
    cin >> gx;
    cout << "Enter Y-coord of researched point: ";
    cin >> gy;
 
    Point center = rect.GetCenterPoint();
    cout << "Distance is " << ::GetDistance( center.x, gx, center.y, gy );
 
    return 0;
}
Вторая задача:
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
#include <cmath>
#include <iostream>
 
using namespace std;
 
struct Point
{
    Point( const double& px = 0., const double& py = 0. ) : x(px), y(py) {}
 
    double x, y;
};
 
struct Rectangle
{
    Point ltPoint; // left top point
    Point rbPoint; // right bottom point
 
    Point GetCenterPoint()
    {
        return Point( (ltPoint.x + rbPoint.x)/2, (ltPoint.y + rbPoint.y)/2 );
    }
};
 
double GetDistance( double x1, double x2, double y1, double y2 )
{
    return ::sqrt( (x1-x2)*(x1-x2) + (y1-y2)*(y1-y2) );
}
 
int main()
{
    unsigned int rectCount;
    double gx;
    double gy;
 
    cout << "Enter X-coord of researched point: ";
    cin >> gx;
    cout << "Enter Y-coord of researched point: ";
    cin >> gy;
    cout << "Enter count of rectangles: ";
    cin >> rectCount;
 
    Rectangle rect;
    Point center;
    Rectangle nearestRect;
    Point nearestCenter;
    for( unsigned int i = 0; i < rectCount; ++i )
    {
        cout << "Enter X-coord of left top " << i+1 << "th point: ";
        cin >> rect.ltPoint.x;
        cout << "Enter Y-coord of left top " << i+1 << "th point: ";
        cin >> rect.ltPoint.y;
        cout << "Enter X-coord of right bottom " << i+1 << "th point: ";
        cin >> rect.rbPoint.x;
        cout << "Enter Y-coord of right bottom " << i+1 << "th point: ";
        cin >> rect.rbPoint.y;
 
        center = rect.GetCenterPoint();
        if( (::GetDistance( center.x, gx, center.y, gy ) < ::GetDistance( nearestCenter.x, gx, nearestCenter.y, gy )) || (nearestCenter.x == 0. && nearestCenter.y == 0.) )
        {
            nearestRect = rect;
            nearestCenter = nearestRect.GetCenterPoint();
        }
    }
 
    cout << "Coodinates of found rectangle: X-coord of left top = " << nearestRect.ltPoint.x
                                        << "; Y-coord of left top = " << nearestRect.ltPoint.y
                                        << "; X-coord of right bottom = " << nearestRect.rbPoint.x
                                        << "; Y-coord of right bottom = " << nearestRect.rbPoint.y << endl;
    return 0;
}
muryj
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 6
05.06.2013, 00:52  [ТС]     Вывести расстояние от заданной точки до точки пересечения диагоналей прямоугольников #5
Спасибо!)
Yandex
Объявления
05.06.2013, 00:52     Вывести расстояние от заданной точки до точки пересечения диагоналей прямоугольников
Ответ Создать тему
Опции темы

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