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

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

Войти
Регистрация
Восстановить пароль
 
muryj
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 6
#1

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

03.06.2013, 18:06. Просмотров 620. Ответов 4
Метки нет (Все метки)

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

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

Определить кратчайшее расстояние от заданной точки до границы заданной фигуры - C++
Определить кратчайшее расстояние от заданной точки до границы заданной фигуры, если точка находится внутри фигуры, иначе вывести...

Определить кратчайшее расстояние от заданной точки до границы заданной фигуры, считая, что точка находится вне - C++
Определить кратчайшее расстояние от заданной точки до границы заданной фигуры, считая, что точка находится вне

Найти точки пересечения прямых проходящих через заданные точки - C++
Всем привет! Прошу помощи в решении задачи: Дана система координат X:Y (по 25 точек в каждую сторону) В ней расположен ряд точек в...

Определить расстояние до горизонта от точки с заданной высотой - C++
Помогите решить задачу.Считая, что Земля – это идеальная сфера с радиусом R = 6350 км, определить расстояние до горизонта от точки с...

Найти минимальное расстояние от точки до точки - C++
В последнем цикле, который должен находить минимальное расстояние от точки до точки и его индекс, какая-то ошибка. Немогу её увидеть....

4
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;
}
1
muryj
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 6
03.06.2013, 19:06  [ТС] #3
Я так понимаю, что нужно ввести несколько прямоугольников и потом вывести координаты вершин того из них, у которого расстояние до точки пересечения диагоналей найменьшее.
0
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;
}
1
muryj
0 / 0 / 0
Регистрация: 01.06.2013
Сообщений: 6
05.06.2013, 00:52  [ТС] #5
Спасибо!)
0
05.06.2013, 00:52
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
05.06.2013, 00:52
Привет! Вот еще темы с ответами:

Как найти координаты точки на прямой удаленной от заданной точки на х - C++
Добрый день! Помогите мне пожалуйста со следующей задачей. Дано 3 точки с координатами A(x1,y1), B(x2,y2), C(x3,y3) Нужно найти...

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

точки пересечения - C++
даны 2 ф-ции и нада найти их точки пересичения,даже точки даны тока их надо найти спомощью проги. так вот писал я так float x=0; ...

найти точки пересечения y = ax^3 + bx^2 + cx + d и y = kx + m - C++
Задача: Определить, пересекаются ли линии y = ax^3 + bx^2 + cx + d и y = kx + m. Если пересекаются, найти точки пересечения ...


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

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

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