Построить множество всех различных остроугольных треугольников

Компьютеры математика графика Delphi геометрия

Привет! мне задали курсач по информатике тема: Построить множество всех различных остроугольных треугольников с вершинами в заданном множестве точек на плоскости.

Обязательно в Delphi, решить кодом, а не геометрически ( Программа+схема алгоритма)

Кто нибудь может что то подсказать? я вообще очень плохо шарю еще

помогите пожалуйста своими мыслями и обьясните вообще что к чему

Примечание:
А может кто нибудь помочь с кодом описания классов? первый раз сталкиваюсь с классами
Ответы:
Алгоритм:
1. Пишем класс, содержащий 3 переменных (они называются полями) типа TPoint (целочисленные координаты), при условии, что точки заданного множества имеют целый тип.
2. Пишем функцию, генерирующую все возможные треугольники на заданном множестве точек.
   2.1. Для проверки, образуют ли точки треугольник, используем следующее правило: считаем длины 3 отрезков, соединяющие 3 сгенерированных точки, и проверяем: любые два из них в сумме должны быть больше третьего. Если меньше или равны, эти три точки не образуют треугольник (в случае равенства треугольник вырождается в отрезок, а меньше они вроде не могут получиться). Проверять придется 3 раза для каждого треугольника, по разу для каждой пары сторон.
   2.2. Сгенерированные треугольники сохранить в виде массива объектов созданного класса.
3. Проверяем и отбрасываем одинаковые треугольники, проходя циклом по полученному массиву (потребуется два цикла, один вложен в другой).
4. Проверяем и отбрасываем тупоугольные и прямоугольные треугольники по следующему правилу: если a^2 + b^2 >= c^2, значит, он прямо- или тупоугольный. a, b и с - стороны треугольника, проверять надо 3 раза для каждого треугольника - каждая из сторон должна быть принята за a, за b и за c (мы же не знаем, какой именно из углов у него тупой)
Павел, в общем, все правильно описал, но позволю себе немного упростить 4 пункт.
Тупой или прямой угол всегда находится напротив наибольшей стороны, поэтому не обязательно проверять неравенство три раза на каждом треугольнике.
Достаточно в качестве с взять наибольшую сторону и проверить, что
c^2 < a^2 + b^2
Если равенство выполняется, то треугольник сразу остроугольный.
Точно, не подумал об этом :)


11 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.