Другие языки программирования и технологии

общую окружность охватывающую все точки

из файла взяты координаты произвольных точек, нужно найти центр и минимальный радиус окружности в который входят все точки
На самом деле задача не такая тривиальная.

Если точка одна, то решение очевидно.

Если точки две, то тоже - диаметром окружности будет отрезок между этими точками.

Если же точек больше двух, то нужно проверить два случая:
а) все точки лежат внутри окружности, построенной на максимальном отрезке как на диаметре
б) все точки лежат внутри некоторой окружности, построенной по трём из них.

Таким образом, схема решения следующая:
1) пишете функцию, возвращающую для двух точек координаты и центр окружности, построенной на них, как на диаметре
2) пишете функцию, возвращающую для трех точек координаты и центр проходящей через них окружности
3) пишете функцию, проверяющую, что массив точек лежит внутри окружности с заданными центром и радиусом
4) считываете из файла массив точек (пусть их будет N)
5) организуете два цикла: от i =1 до N и от j=i+1 до N. Для i-й и j-й точки получаете центр и радиус функцией из п. 1, затем функцией из п. 3 проверяете, что остальные точки лежат внутри этой окружности.
6) если в п. 5 окружность не найдена, организуете три цикла: от i =1 до N, от j=i+1 до N, от k=j+1 до N. Для i-й, j-й, k-й точек получаете центр и радиус функцией из п. 2, затем функцией из п. 3 проверяете, что остальные точки лежат внутри этой окружности.
7) выводите результат.
Евгений Михед
Евгений Михед
24 825
Лучший ответ
Найти самый длинный отрезок и поделить его пополам сможете?
Витя Игнатьев
Витя Игнатьев
64 285