|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
28.11.2020, 17:00 | #1 |
Регистрация: 18.11.2020
Сообщений: 6
|
Как проверить образують ли 4 точки квадрат?
Пользователь вводит 4 координаты (x1,y1, x2, y2, x3, y3, x4, y4) и если эти 4 точки образуют квадрат, то выводиться 1, если нет, то 0.
Помогите пожалуйста реализовать это. |
28.11.2020, 17:42 | #2 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
1. квадрат это ромб с равными диагоналями.
2. ромб это четырехугольник с четырьмя равными сторонами. 3. расстояние между двумя точками это корень квадратный из суммы квадратов dx и dy, где dx --разность координаты x для этих точек dy --разность координаты y для этих точек 4. посчитать расстояния(длины сторон и диагоналей), можно и просто квадраты оных (без расчета корня). 5. проверить их на совпадения(см. пп.1., 2.).
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 28.11.2020 в 17:47. |
28.11.2020, 18:11 | #3 |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
Другой путь:
Вариант а) 1. Проверяем равенство двух соседних сторон. У квадрата они равны. 2. Проверяем Перпендикулярность этих сторон. У квадрата они перпендикулярны. 3. Проверяем равенство диагоналей. У квадрата они равны. Вариант б) 1. Ищем координаты точек, которые являются серединами диагоналей. Если совпадают, то точки лежат на окружности, а иначе не квадрат. 2. Проверяем равенство двух соседних сторон. Если равны, то квадрат, а иначе - не квадрат. PS: Второй вариант проще.
Как-то так, ...
|
28.11.2020, 18:59 | #4 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Тут ещё засада: координаты могут вводиться не в порядке обхода по сторонам 4-угольника (по часовой или против). Например: 1-я, 3-я,4-я, 2-я. Нужно ещё определить этот порядок. Но для 8-го класса СШ это, наверно, излишне.
А если всё-таки надо, то я бы вычислил условный центр где-то в середине 4-угольника и упорядочил точки по возхрастанию величины угла между осью, положим, Х и направлением от центра на точку. Эта тема регулярно появляется с началом нового учебного года. Я и сам на неё отвечал минимум 1 раз, да лень искать. ------------------------------ А вообще можно тупо рассчитать расстояния от каждой точки до каждой, и если 4 совпадут (в пределах допустимой ошибки) и две оствшиеся - тоже меж собой совпадут - пишем КВАДРАТ и идём пить кофий. А в мои студенческие времена получивший двойку на экзамене на вопрос "Ну как?" отвечал "Квадрат !" Последний раз редактировалось digitalis; 28.11.2020 в 19:16. |
28.11.2020, 19:31 | #5 |
Старожил
Регистрация: 02.03.2008
Сообщений: 2,499
|
По моему - проще всего так:
Берем любую из точек , считаем расстояния до 3-х других. Получаем 3 величины. Для квадрата - две из этих величин равны, третья в корень из 2 раз больше. |
28.11.2020, 20:11 | #6 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
"Красиво и просто, в стиле чемпиона" © О.Бендер
|
29.11.2020, 14:05 | #7 |
Форумчанин
Регистрация: 17.06.2012
Сообщений: 957
|
Программа на языке высочайшего уровня qbasic бэйсик qb64
Код:
Результат: 1 Исправлено вычисление сторон и следующее сообщение устарело Проверочные точки прямоугольника: Код:
Случайные и Массивы https://programmersforum.ru/showthread.php?t=344371 Учим C# & basic & excel & python https://programmersforum.ru/showthre...=327446&page=5 ничего нерекомендую
Последний раз редактировалось сфинкс; 29.11.2020 в 19:38. |
29.11.2020, 17:45 | #8 | ||
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
сфинкс
Цитата:
Код:
Код:
Для прямоугольника это так же верно. type_Oleg Цитата:
В этом случае нужно задавать и epsilon. Если вводятся координаты, то они все либо целые, либо рациональные числа. Другие, предложенные тут методы этого лишены. Так что получить ошибочное решение весьма вероятно. PS: Навеяло, так как недавно познакомился в Python с такими типами данных, как Fraction и Decimal. PSS: "Красиво и просто, в стиле чемпиона" © О.Бендер А чё он там спёр? Туру (ладью) или лошадь (коня)?
Как-то так, ...
|
||
29.11.2020, 22:15 | #9 |
Старожил
Регистрация: 04.02.2011
Сообщений: 4,550
|
Малость переврал, бо по памяти
Ласкеру проворно подставили мраморную лестницу, и бодрый экс-чемпион, сдувая с левого рукава пылинку, севшую на него во время полета над Силезией, упал в объятия одноглазого. Одноглазый взял Ласкера за талию, подвел его к чемпиону и сказал: — Помиритесь! Прошу вас об этом от имени широких васюкинских масс! Помиритесь! Хозе-Рауль шумно вздохнул и, потрясая руку старого ветерана, сказал: — Я всегда преклонялся перед вашей идеей перевода слона в испанской партии с b5 на c4! — Ура! — воскликнул одноглазый. — Просто и убедительно, в стиле чемпиона! И вся необозримая толпа подхватила: — Ура! Виват! Банзай! Просто и убедительно, в стиле чемпиона! ! ! Если квадрат не параллелен осям координат, то при вычислении расстояний методом Пифа Горыча - независимо от выбранного метода - неизбежно приходим к действительным числам, а сравнивать их - без ёпсилона никак, хошь-не-хошь. Последний раз редактировалось digitalis; 29.11.2020 в 22:22. |
30.11.2020, 08:53 | #10 | |
Старожил
Регистрация: 23.10.2010
Сообщений: 2,309
|
digitalis
Цитата:
Как-то так, ...
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
С++ и матан. Как проверить то, что три точки лежат на одной прямой? | Алексей_2012 | Помощь студентам | 30 | 16.12.2016 15:19 |
нарисовать точки и проверить их циклом(DELPHI) | beygul | Помощь студентам | 1 | 24.03.2014 14:46 |
решение задачи в Pascal - Проверить принадлежность точки с заданными координатами кругу с заданным радиусом и координатами центра | Екатерина23 | Помощь студентам | 1 | 05.12.2013 16:35 |
Как в С квадрат поставить? | Ol'ga | Общие вопросы C/C++ | 10 | 31.10.2010 10:31 |
Имеются координаты точки. Как проверить какого цвета соседние точки на форме? | Rin | Мультимедиа в Delphi | 2 | 10.11.2009 22:47 |