5 / 5 / 0
Регистрация: 12.03.2015
Сообщений: 103
1

Стороны, параллельные осям координат и диагонали

28.03.2015, 14:30. Показов 3899. Ответов 6
Метки нет (Все метки)

На координатной плоскости построили квадрат, заданный координатами двух противоположных вершин:
а) со сторонами, параллельными осям координат;
б) с диагоналями, параллельными осям координат;
Определить, принадлежит ли точка с координатами x, y квадрату?
Помогите пожалуйста написать программу на С++! Срочно нужно!
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.03.2015, 14:30
Ответы с готовыми решениями:

Даны два прямоугольника стороны которых параллельны или перпендикулярны осям координат, известны координаты левого нижне
Даны два прямоугольника стороны которых параллельны или перпендикулярны осям координат, известны...

С++ Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат. Известны координаты левого нижнего угла каждого из них...
17)Даны два прямоугольника, стороны которых параллельны или перпендикулярны осям координат....

Создать класс "Ромб, диагонали которого параллельны осям координат"
Создать класс Ромб, диагонали которого параллельны осям координат. Ромб определяется координатами...

Заменить в коде параллельные главной, на параллельные побочной диагонали
Вот код,нужно сделать чтобы сортировались диагонали параллельные побочной, а не главной. помогите...

6
21 / 21 / 13
Регистрация: 28.04.2013
Сообщений: 85
28.03.2015, 15:41 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
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
82
83
#include <iostream>
 
struct Point
{
    Point(): x(0), y(0){}
    Point( double _x, double _y ): x(_x), y(_y){}
    double x;
    double y;
};
 
struct Square
{
    Square();
    Square( const Point& _p1, const Point& _p2) : p1(_p1), p2(_p2) {}
    Point p1;
    Point p2;
    bool isInOrt( const Point& p )
    {
        if( ( p.x >= p1.x && p.x <= p2.x && p.y >= p1.y && p.y <= p2.y ) ||
            ( p.x >= p2.x && p.x <= p1.x && p.y >= p2.y && p.y <= p1.y )
            )
            return true;
        return false;
    }
    bool isInDiag( const Point& p )
    {
        if( p1.x != p2.x && p1.y != p2.y ) return false;
 
        if( p1.x == p2.x )
        {
            if( p1.y > p2.y )
            {
                Point tmp = p2;
                p2 = p1;
                p1 = tmp;
            }
 
            if( ( p.y - p1.y >= -( p.x - p1.x ) ) &&
                ( p.y - p2.y <= p.x - p2.x ) &&
                ( p.y - p2.y <= -( p.x - p2.x ) ) &&
                ( p.y - p1.y >= p.x - p1.x )
               )
                return true;
            return false;
 
        }
        else // p1.y == p2.y
        {
            if( p1.x > p2.x )
            {
                Point tmp = p2;
                p2 = p1;
                p1 = tmp;
            }
 
            if( ( p.y - p1.y >= -( p.x - p1.x ) ) &&
                ( p.y - p1.y <= p.x - p1.x ) &&
                ( p.y - p2.y <= -( p.x - p2.x ) ) &&
                ( p.y - p2.y >= p.x - p2.x )
               )
                return true;
            return false;
        }
 
 
    }
};
 
 
int main()
{
    Square square_ort( Point( 0, 0 ), Point( 5, 5 ) ); // создадим квадрат( прямоугольник ) с параеллельными сторонами
 
    std::cout << square_ort.isInOrt( Point( 1, 1 ) ) << std::endl;
    std::cout << square_ort.isInOrt( Point( -1, 0 ) ) << std::endl;
 
    Square square_diag( Point( 0, 0 ), Point( 0, 5 ) ); // создадим квадрат( прямоугольник ) с параеллельными диагоналями
 
    std::cout << square_diag.isInOrt( Point( 1, 1 ) ) << std::endl;
    std::cout << square_diag.isInOrt( Point( 0, 1 ) ) << std::endl;
 
    return 0;
}
0
5 / 5 / 0
Регистрация: 12.03.2015
Сообщений: 103
28.03.2015, 15:50  [ТС] 3
ого! какой код! это на visual? просто мне на нем нужно..
и можно комментарии! буду очень благодарна!
0
21 / 21 / 13
Регистрация: 28.04.2013
Сообщений: 85
28.03.2015, 16:06 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
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
82
83
struct Point // структура "точка" хранит координаты х и у
{
    Point(): x(0), y(0){} // конструктор по умолчанию - занулим координаты
    Point( double _x, double _y ): x(_x), y(_y){} // конструктор от координат, присвоим полям точки переданные координаты
    double x; // поле содержит координату х
    double y; // поле содержит координату у
};
 
struct Square // структура квадрат, скорее прямоугольник
{
    Square(){} // конструктор по умолчанию, не используется хрен с ним кароч
    Square( const Point& _p1, const Point& _p2) : p1(_p1), p2(_p2) {} // конструктор квадрата от 2 точек
    Point p1; // храним заданные точки, одну
    Point p2; // и вторую
    bool isInOrt( const Point& p ) // метод возвращаяющий по переданной в него точке входит ли точка в квадрат с параллельными сторонами
    {
        if( ( p.x >= p1.x && p.x <= p2.x && p.y >= p1.y && p.y <= p2.y ) || // тут просто проверим входит ли она в область квадрата, тут все просто
            ( p.x >= p2.x && p.x <= p1.x && p.y >= p2.y && p.y <= p1.y )
            )
            return true;// входит - вернем тру
        return false;//не входит вернем фолс
    }
    bool isInDiag( const Point& p ) // возвращает входит ли точка в кварат с паралельными диагоналями
    {
        if( p1.x != p2.x && p1.y != p2.y ) return false; // если диагональ не параллельна то это бредовый квадрат вообще получился
 
        if( p1.x == p2.x ) // если переданная диагональ паралельна у
        {
            if( p1.y > p2.y ) // сделаем так, что р1 ниже р2
            {
                Point tmp = p2;
                p2 = p1;
                p1 = tmp;
            }
 
            // проверим неравенства, задающие квадрат
            if( ( p.y - p1.y >= -( p.x - p1.x ) ) &&
                ( p.y - p2.y <= p.x - p2.x ) &&
                ( p.y - p2.y <= -( p.x - p2.x ) ) &&
                ( p.y - p1.y >= p.x - p1.x )
               )
                return true;//неравенства пройдены, значит ок
            return false;// не ок 
 
        }
        else // p1.y == p2.y // тут переданная диагональ параллельна х
        {
            if( p1.x > p2.x ) // сделаем так, что р1 левее р2
            {
                Point tmp = p2;
                p2 = p1;
                p1 = tmp;
            }
 
            if( ( p.y - p1.y >= -( p.x - p1.x ) ) &&
                ( p.y - p1.y <= p.x - p1.x ) &&
                ( p.y - p2.y <= -( p.x - p2.x ) ) &&
                ( p.y - p2.y >= p.x - p2.x )
               )
                return true;// ок
            return false; // не ок
        }
 
 
    }
};
 
 
int main()
{
    Square square_ort( Point( 0, 0 ), Point( 5, 5 ) ); // создадим квадрат( прямоугольник ) с параеллельными сторонами
 
    std::cout << square_ort.isInOrt( Point( 1, 1 ) ) << std::endl; // передаем точку в методы, на выходе получаем попадает или нет
    std::cout << square_ort.isInOrt( Point( -1, 0 ) ) << std::endl;
 
    Square square_diag( Point( 0, 0 ), Point( 0, 5 ) ); // создадим квадрат( прямоугольник ) с параеллельными диагоналями
    // важно отметить, что одна из координат у двух точеек в это случае обязана совпадать
 
    std::cout << square_diag.isInOrt( Point( 1, 1 ) ) << std::endl;
    std::cout << square_diag.isInOrt( Point( 0, 1 ) ) << std::endl;
 
    return 0;
}
0
21 / 21 / 13
Регистрация: 28.04.2013
Сообщений: 85
28.03.2015, 16:25 5
Стороны, параллельные осям координат и диагонали

уравнения прямых + когда нам дают пквадрат с параллельными диагоналями там 2 случая нам дали желтый или красный вариант, я думаю вполне понятно нарисовал (мда, не факт канеш)
0
5 / 5 / 0
Регистрация: 12.03.2015
Сообщений: 103
28.03.2015, 16:27  [ТС] 6
спасибо большое)выручаете очень сильно)))рисунок нормальный, понятный)я разберусь)
0
5 / 5 / 0
Регистрация: 12.03.2015
Сообщений: 103
19.05.2015, 23:36  [ТС] 7
здесь неправильный второй случай( помогите пожалуйста!
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.05.2015, 23:36
Помогаю со студенческими работами здесь

Найти все дополнительные диагонали (параллельные главной диагонали) идущие с правой верхней стороны вниз налево
Привет!Надо найти все дополнителные(паралельные основной) диагонали в матрице,которые идут с...

Даны координаты вершин двух прямоугольников, стороны которых параллельны осям координат
Даны координаты вершин двух прямоугольников, стороны которых параллельны осям координат. Даны...

Даны два прямоугольника, стороны которых параллельны или перпендику- лярны осям координат
Даны два прямоугольника, стороны которых параллельны или перпендику- лярны осям координат....

Даны два прямоугольника, стороны которого параллельны или перпендикулярны осям координат. Известны координаты
Даны два прямоугольника, стороны которого параллельны или перпендикулярны осям координат. Известны...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru