![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
Домовой |
![]() ![]()
Сообщение
#1
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здравствуйте... еще раз ))
Попалось такое задание: Даны координаты N точек: (xi, yi), i=1,2,...,N. Найти радиус наименьшего круга с центром в начале координат, внутрь которого попадают все эти точки. В принципе, честно говоря, понял его только перечитав раз 20, это точно. Так как я геометрию не любил даже еще со школьной программы. Для составления програмки не поленился, нашел формулу радиуса с центром в начале координат )) Сделал сначала элементарную програмульку, где ввобишь координаты 2 точек, а она выводит их радиус: Код program okruj; var x, y, r, : real; begin write('x= '); readln(x); write('y= '); readln(y); R:=Sqr(x)+Sqr(y); r:=sqr®; writeln('radius = ', r:2:0); readln; writeln; end. У меня вопрос - наверняка кто-то уже встречался с подобного рода задачами. Как вбить данные в массив - это вроде понятно, но как сложить один радиус... из скажем 5 точек? т.е. при каждом действии в массиве считать по этой йормуле, а дальше запоминать? Потом плюсовать? гмммммммм... Есть над чем подумать, прошу помочь. Пасиб Специально для кода у нас есть спец. тэг code Сообщение отредактировано: GoodWind - 16.12.2005 1:42 |
![]() ![]() |
GoodWind |
![]()
Сообщение
#2
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
ищешь точку, наиболее удаленную от центра координат - растояние до нее и будет радиусом искомой окружности.
-------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
volvo |
![]()
Сообщение
#3
|
Гость ![]() |
А ты не подумал, что искомый радиус будет равен максимальному из расстояний от точки до начала координат?
![]() Иначе круг просто не закроет какую-либо из точек... |
Домовой |
![]()
Сообщение
#4
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
гм... гмм... гм...
хм... ![]() Так чУвО мне выбрать то? Какая формула то правильная, иль действие? ААА... точно же! ну я и дурак... то есть получается, что я грубо говорю конечно, человек ввел 2 точки, координаты первой - 1 и 1, а координаты второй 2 и 5... то радиус высчитывается по второму... мдя... А если захотят ввести 20 точек, с различными координатами, то чего тады делать? т.е. получается высчитывать координаты каждой, потом каждую пихать в какой-нить массив, а затем сравнивать и выбирать больший? Я проверил на программке, что точка с коорд. 2 и 2 имеет радиус 64, а с коорд. 3 и 1 - 100. Так что суммирование, чувствую, тут не поможет. Иль по проще можно? Сообщение отредактировано: Домовой - 16.12.2005 2:08 |
GoodWind |
![]()
Сообщение
#5
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
даю установку:
найди максимальное расстояние от начала координат до одной из точек и будет тебе счастье. 0-=-=-0 я все сказал ![]() -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
Домовой |
![]()
Сообщение
#6
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
так высчитывание расстояния возможно тока по радиусу?
алень я )) вот формула , да? т.е. для высчитывание расстояния до точки: sqr(x)+sqr(y) |
GoodWind |
![]()
Сообщение
#7
|
![]() Автооответчик ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 1 188 Пол: Мужской Реальное имя: Александр Репутация: ![]() ![]() ![]() |
Код sqrt(sqr(x)+sqr(y)) так вернее будет... ![]() и не надо тебе хранить расстояния в массиве. В массиве ты храни координаты точек, а потом пройди по ним циклом: Код for i:=0 to n do if sqrt(sqr(a[i].x)+sqr(a[i].y))>max then max:=sqrt(sqr(a[i].x)+sqr(a[i].y)); массив опиши так: Код const n=10; {это размер твоего массива} type coord=record x,y:word; end; var a:array [1..n] of cood; дальше все должно быть понятно... -------------------- Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата В массиве ты храни координаты точек, а потом пройди по ним циклом ![]() |
Домовой |
![]()
Сообщение
#9
|
Новичок ![]() Группа: Пользователи Сообщений: 23 Пол: Мужской Репутация: ![]() ![]() ![]() |
GoodWind, volvo
Спасибо Вам большое ![]() P.S. честно говоря массив - это слово я поставил автоматом, когда сообщение печатал ![]() Я программер на PHP и все оттудова беру... но оказывается в Паскале он тож есть )) Сообщение отредактировано: Домовой - 16.12.2005 19:48 |
Altair |
![]()
Сообщение
#10
|
![]() Ищущий истину ![]() ![]() ![]() ![]() ![]() ![]() Группа: Модераторы Сообщений: 4 824 Пол: Мужской Реальное имя: Олег Репутация: ![]() ![]() ![]() |
Можно я поизвращаюсь ?
1. найти выпуклую оболочку множества точек. 2. http://forum.pascalnet.ru/index.php?showtopic=2898 ![]() -------------------- Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С) |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 10:52 |