Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2009, 23:26   #1
Estale
 
Регистрация: 25.09.2009
Сообщений: 4
Вопрос Задача на С++ о четырёхугольнике

Здравствуйте господа программисты.
У меня вот такая вот задачка...
"Даны действительные числа x1, y1,x2, y2, x3, y3, x4, y4, которые определяют координаты вершин четырёхугольника при их последовательном обходе (x1,y1), (x2,y2), (x3,y3), (x4,y4). Определить вид четырёхугольника."

Собственно в целом всё понятно и алгоритм я составил, но загвоздка в трапеции. Трапецией называется четёрхугольник, у которого основания (противолежащие 2 стороны) параллельны... Так вот, как оформить условие, что они параллельны?

Заранее благодарю )
Estale вне форума Ответить с цитированием
Старый 25.09.2009, 23:31   #2
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

может так?
Код:
if( (y1-y2) == (y3-y4) )
...
p.s. y1 - верхний левый, y2 - нижний левый, y3 - верхний правый, y4 - нижний правый.
netrino вне форума Ответить с цитированием
Старый 25.09.2009, 23:48   #3
Estale
 
Регистрация: 25.09.2009
Сообщений: 4
По умолчанию

Цитата:
Сообщение от netrino Посмотреть сообщение
может так?
Код:
if( (y1-y2) == (y3-y4) )
...
p.s. y1 - верхний левый, y2 - нижний левый, y3 - верхний правый, y4 - нижний правый.
Не думаю что так.
Во-первых, тогда координаты не последовательны (тогда уж обозначать так: y1-верхний левый, y2-верхний правый, y3-нижний правый, y4-нижний левый)
А во-вторых, кто сказал, что параллельные стороны обязательно должны быть горизонтальными? Параллельные стороны можно построить и вертикально, и под углом... и всё равно можно будет составить трапецию...
Estale вне форума Ответить с цитированием
Старый 26.09.2009, 00:19   #4
netrino
Участник клуба
 
Аватар для netrino
 
Регистрация: 15.07.2008
Сообщений: 1,933
По умолчанию

Ну я не знал, как именно вы их расположили) можно и так, это не принципиально. Раз могут быть не только горизонтальными, то, как вариант, можно искать угловые коэффициенты прямых и сравнивать их(они должны быть равны). :
Код:
if( ((y2-y1)/(x2-x1)) == ((y3-y4)/(x3-x4)) )
Только координаты должны быть вещественными числами, или используйте приведение.
netrino вне форума Ответить с цитированием
Старый 26.09.2009, 21:21   #5
Estale
 
Регистрация: 25.09.2009
Сообщений: 4
По умолчанию

Что господа программисты, мыслей нет больше никаких?
Estale вне форума Ответить с цитированием
Старый 27.09.2009, 03:48   #6
megachuhancer
Форумчанин
 
Регистрация: 16.04.2009
Сообщений: 247
По умолчанию

Можно найти уравнения прямых в виде Ax + By + C = 0.
У прямой проходящей через точки (x1, y1) и (x2, y2) такое уравнение:
(y2 - y1) * x + (x1 - x2) * y + x2 * y1 - x1 * y2 = 0
Прямые параллельны тогда и только тогда, когда A1 * B2 - A2 * B1 = 0.
megachuhancer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск