![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Berline |
![]()
Сообщение
#1
|
Гость ![]() |
Дано n точек на плоскости: найти окружность на заданных точках и содержащую наибольшее число заданных точек.
Буду очень признателен, если кто поможет написать программу! |
![]() ![]() |
ShadowWatcher |
![]()
Сообщение
#2
|
Новичок ![]() Группа: Пользователи Сообщений: 29 Пол: Мужской Репутация: ![]() ![]() ![]() |
Перебор сделать легко:
Код For i:= 0 To Count-3 Do For j:=i + 1 To Count-2 Do For k:=j + 1 To Count-1 Do Begin GetRoundCenterAndRadius(x[i],y[i],x[j],y[j],x[k],y[k],NewCenterX,NewCenterY,NewR); NewCount := 0; For l:=0 To Count Do If PointOnRound(NewCenterX,NewCenterY,NewR,x[l],y[l]) Then Inc(NewCount); If NewCount > CurrentCount Then Begin CurrentCenterX := NewCenterX; CurrentCenterY := NewCenterY; CurrentR := NewR End End; WriteLn('Center: (',CurrentCenterX,';',CurrentCenterY.')'); WriteLn('Radius: ',CurrentR) Предполагается, что процедура GetRoundCenterAndRadius по координатам трёх точек возвращает центр и радиус окружности, на которой они лежат, а функция PointOnRound проверяет лежит ли точка на окружности указанного радиуса и с центром в указанноё точке. Написал бы и их, но геометрию уже забывать начал да и компилятора под рукой нет... А так думаю, что принцип можно понять, а дописать особого труда не составит даже для начинающего ![]() |
![]() ![]() |
![]() |
Текстовая версия | 23.06.2025 18:28 |