IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Радиус круга, Вычисляем по точкам
Домовой
сообщение 16.12.2005 1:39
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


Здравствуйте... еще раз ))
Попалось такое задание:
Даны координаты 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
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов(1 - 9)
GoodWind
сообщение 16.12.2005 1:44
Сообщение #2


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


ищешь точку, наиболее удаленную от центра координат - растояние до нее и будет радиусом искомой окружности.


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.12.2005 1:47
Сообщение #3


Гость






А ты не подумал, что искомый радиус будет равен максимальному из расстояний от точки до начала координат? blum.gif

Иначе круг просто не закроет какую-либо из точек...
 К началу страницы 
+ Ответить 
Домовой
сообщение 16.12.2005 1:58
Сообщение #4


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


гм... гмм... гм...
хм...
blink.gif
Так чУвО мне выбрать то?
Какая формула то правильная, иль действие?


ААА... точно же!
ну я и дурак...
то есть получается, что я грубо говорю конечно,
человек ввел 2 точки, координаты первой - 1 и 1,
а координаты второй 2 и 5... то радиус высчитывается по второму... мдя...
А если захотят ввести 20 точек, с различными координатами, то чего тады делать?
т.е. получается высчитывать координаты каждой, потом каждую пихать в какой-нить массив, а затем сравнивать и выбирать больший?
Я проверил на программке,
что точка с коорд. 2 и 2 имеет радиус 64, а с коорд. 3 и 1 - 100.
Так что суммирование, чувствую, тут не поможет.
Иль по проще можно?

Сообщение отредактировано: Домовой - 16.12.2005 2:08
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 16.12.2005 2:03
Сообщение #5


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


даю установку:
найди максимальное расстояние от начала координат до одной из точек и будет тебе счастье.

0-=-=-0
я все сказал wacko.gif


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Домовой
сообщение 16.12.2005 2:17
Сообщение #6


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


так высчитывание расстояния возможно тока по радиусу?

алень я ))
вот формула , да?
т.е. для высчитывание расстояния до точки:
sqr(x)+sqr(y)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
GoodWind
сообщение 16.12.2005 2:34
Сообщение #7


Автооответчик
*****

Группа: Модераторы
Сообщений: 1 188
Пол: Мужской
Реальное имя: Александр

Репутация: -  16  +


Код
sqrt(sqr(x)+sqr(y))

так вернее будет... wink.gif

и не надо тебе хранить расстояния в массиве. В массиве ты храни координаты точек, а потом пройди по ним циклом:

Код
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;


дальше все должно быть понятно...


--------------------
Неадекватная чушь может быть адекватным ответом на неадекватный вопрос. Понятно или разжевать?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
volvo
сообщение 16.12.2005 8:51
Сообщение #8


Гость






Цитата
В массиве ты храни координаты точек, а потом пройди по ним циклом
blink.gif Это еще зачем? Достаточно сразу при вводе очередной точки вычислять ее расстояние до начала координат, и сравнить с максимальным на данный момент... Зачем лишние циклы?
 К началу страницы 
+ Ответить 
Домовой
сообщение 16.12.2005 19:46
Сообщение #9


Новичок
*

Группа: Пользователи
Сообщений: 23
Пол: Мужской

Репутация: -  0  +


GoodWind, volvo
Спасибо Вам большое smile.gif)
P.S. честно говоря массив - это слово я поставил автоматом, когда сообщение печатал smile.gif
Я программер на PHP и все оттудова беру...
но оказывается в Паскале он тож есть ))

Сообщение отредактировано: Домовой - 16.12.2005 19:48
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
Altair
сообщение 16.12.2005 23:32
Сообщение #10


Ищущий истину
******

Группа: Модераторы
Сообщений: 4 824
Пол: Мужской
Реальное имя: Олег

Репутация: -  45  +


Можно я поизвращаюсь ?
1. найти выпуклую оболочку множества точек.
2. http://forum.pascalnet.ru/index.php?showtopic=2898
good.gif


--------------------
Помогая друг другу, мы справимся с любыми трудностями!
"Не опускать крылья!" (С)
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 20.07.2025 10:52
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"