Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.06.2010, 22:01   #1
ko1991
 
Регистрация: 28.06.2010
Сообщений: 3
Восклицание Найти число медиан множества точек

помогите сделать программу (или подсказать как ее делать). Не могу даже понять как к ней подойти.

Медианой множества, состоящего из четного числа точек плоскости, никакие три из которых не лежат на одной прямой, называется прямая, соединяющая две точки множества, с обеих сторон от которой лежит равное число точек.
Даны действительные числа x1, y1, x2, y2, …, xn, yn (n – нечетное число). Найти число медиан множества точек с координатами (x1, y1),( x2, y2),…( xn, yn) в предположении, что никакие три точки этого множества не лежат на одной прямой.
ko1991 вне форума Ответить с цитированием
Старый 29.06.2010, 00:59   #2
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

1) создаём массив из N точек
2) перебираем в цикле каждую пару и на них строим уравнения прямых (вернее находим лишь коэффициенты ур-ий) - всего будет k := (n * (n - 1)) div 2 ур-ий
Код:
for i := 0 to n - 2 do for j := i + 1 to n - 1 do
A := T[i, 1] - T[j, 1];
B := T[j, 0] - T[i, 0];
C := - A * T[i, 0] - B * T[i, 1];
3) Для каждого ур-ия прямой делаем следующее.
Проверяем каждую точку (естественно кроме 2-х точек i, j на которых основана прямая) на принадлежность определённой полуплоскости. Для этого подставляем каждую точку в выражение Ax+By+C. Точки принажлежащие одинаковым полуплоскостям будут иметь один и тот же знак (+ или -)
В цикле
Код:
count := 0;
for k := 0 to n - 1 do
  if (k <> i) and (k <> j) then
    if A * T[k, 0] + B * T[k, 1] + C < 0 then inc(count)
Теперь мы знаем кол-во точек в одной из полуплоскостей. И если это кол-во равно половине всех точек - 2, то увеличиваем счётчик медиа
Код:
if count = (n - 2) div 2 then inc(median_count)
4) возвращаемся к пункту 2) для следующей пары точек
eoln вне форума Ответить с цитированием
Старый 29.06.2010, 10:54   #3
ko1991
 
Регистрация: 28.06.2010
Сообщений: 3
По умолчанию

а мне надо чтоб ввод точек был вручную, где мне это прописать, а точнее даже какие переменные им присвоить?

а можешь ее написать полностью? а че такое Т?

Последний раз редактировалось Stilet; 30.06.2010 в 10:05.
ko1991 вне форума Ответить с цитированием
Старый 29.06.2010, 12:50   #4
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

1) Создаём массив точек
Код:
var T: array of array[0..1] of integer;
...
write('n='); readln(n);
setlength(T, n);
for i := 0 to n - 1 do begin
  write('input [x', i, ', y', i, '] = ');
  readln(T[i, 0], T[i, 1]);//вводим координаты i-той точки
end;
2) см. пост 2. Там всё подробно описано
Код:
for i := 0 to n - 2 do for j := i + 1 to n - 1 do begin// слово begin забыл
A := T[i, 1] - T[j, 1];
B := T[j, 0] - T[i, 0];
C := - A * T[i, 0] - B * T[i, 1];
count := 0;
for k := 0 to n - 1 do
  if (k <> i) and (k <> j) then
    if A * T[k, 0] + B * T[k, 1] + C < 0 then inc(count);
if count = (n - 2) div 2 then inc(median_count)
end
Осталось вывести результат и объявить переменные
eoln вне форума Ответить с цитированием
Старый 29.06.2010, 14:57   #5
ko1991
 
Регистрация: 28.06.2010
Сообщений: 3
По умолчанию

а ты какой используешь паскаль? ато у меня просто tp7 не понимает некоторые функции, которые ты написал. он не знает че такое T: array of array[0..1] of integer;
и setlength(T, n);
ko1991 вне форума Ответить с цитированием
Старый 29.06.2010, 17:25   #6
eoln
Старожил
 
Аватар для eoln
 
Регистрация: 26.04.2008
Сообщений: 2,645
По умолчанию

У меня Delphi, для паскаля используй либо динамические списки, либо статические массивы var T: array[0..99, 0..1] of integer; - тогда setlength не потребуется, максимальное кол-во точек = 100
eoln вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Треугольник на плоскости задан координатами своих вершин.Найти координаты точки пересечения его медиан. Silver23 Помощь студентам 2 13.01.2010 15:59
определить радиус и центр окружности, на кот. лежит наиб.число точек заданного на плоскости мн-ва точек) kcю Помощь студентам 0 17.11.2009 19:50
множества точек kcю Помощь студентам 13 08.11.2009 11:48