Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / Прошу помощи ! / 15 сообщений из 15, страница 1 из 1
26.12.2005, 23:29
    #33458435
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
Господа, вы вправе послать меня конечно подальше , но мне надо решить такую задачку (кстати в билдере)

Дан массив точек с координатами (x1;y1) (x2;y2)....(Xn;Yn) где n=10. Выяснить , найдутся ли среди них такие , которые являются вершинами квадрата. Я в жизь не жёг на билдере , а тут блин просто надо !

Координаты точек должны генерится с помошью РНД ...

Вообщем тыкните носом убогого или помогите !

С уважением , Дарт благодарный.
...
Рейтинг: 0 / 0
27.12.2005, 03:16
    #33458475
AsPiro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
Закладка!
...
Рейтинг: 0 / 0
27.12.2005, 07:07
    #33458509
Карабас Барабас
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
Если РНД - это генератор случайных чисел, а координаты - вещественные числа, то с ооооочень большой вероятностью искомых точек нет.
Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
27.12.2005, 10:54
    #33458886
-=serj=-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
Вспомни школьную геометрию, опиши условия вершин квадрата, и пройдись по точкам :)
...
Рейтинг: 0 / 0
27.12.2005, 21:14
    #33460605
spectre
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
Карабас БарабасЕсли РНД - это генератор случайных чисел, а координаты - вещественные числа, то с ооооочень большой вероятностью искомых точек нет.

А кто говорит, что координаты должны быть вещественными. Кроме того, стандартный rand генерирует целые числа.
...
Рейтинг: 0 / 0
27.12.2005, 22:57
    #33460668
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
rand и random что то не хотят генерить числа !!! юзаю randomize и нифига... для простоты можно взять вершины целыми числами..

ПОМОГИТЕ просто ...

карт бланш от тёмной силы вам не помешает , пусть даже виртуальный , вам это зачтётся , я просто занят очень другим по горло . просто пипец...
...
Рейтинг: 0 / 0
01.01.2006, 15:20
    #33466794
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
разобрался с генерацией !

теперь чешу репу над способом..
...
Рейтинг: 0 / 0
02.01.2006, 22:37
    #33467117
# Darth Vader #
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
Между прочим это задачка мля олимпиадная ...

Ну ёкалы манэ, неужели нет тут крутышей добряков?

да ну вас !
...
Рейтинг: 0 / 0
13.01.2006, 00:24
    #33480223
neskif
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
При случайной генерации точек с вещественными координатами конечно же вероятность получения квадрата крайне низкая. Но она все-таки (по крайней мере теоретически) есть. А алгоритм по-школьному прост. Ищутся все расстояния: для каждой точки со всеми остальными. А затем все эти числа сравниваются. Если нашлись четыре одинаковых, то квадрат найден.Но при этом найденные 4 точки должны образовывать замкнутый полигон. Еще, правда, условие, т.к. может оказаться, что нашли не квадрат, а ромб, чтобы углы были прямые. Но раз мы имеем координаты, то эта задачка разрешимая, т.к. проверяем условие ортогональности для прямых (по коэффициенту перед X).
...
Рейтинг: 0 / 0
13.01.2006, 01:08
    #33480243
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
neskifА алгоритм по-школьному прост. Ищутся все расстояния: для каждой точки со всеми остальными. А затем все эти числа сравниваются.А векотора проверять не проще? :)
...
Рейтинг: 0 / 0
13.01.2006, 11:45
    #33480919
Гадёныш
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
делай векторами...

с 3 точек делаеш 2 вектора... скалярно умножаеш, если 0, тоды это прямой угол, потом проверяеш их длину... это модули векторов

а ещё проще взять 2 вектора, которые могут быть диагоналями квадрата,
если они перпендикулярны, и пересечением делятся пополам, то это квадрат
...
Рейтинг: 0 / 0
13.01.2006, 18:15
    #33482300
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
Кошмар какой!
Код: plaintext
1.
2.
if ((p1.x-p2.x == p3.x-p4.x) && (p1.y-p2.y == p3.y-p4.y) && (p1.x-p3.x == p2.x-p4.x) && (p1.y-p3.y == p2.y-p4.y)) {
  printf("(p1, p2, p3, p4) is a square\n");
}
Первоклашка может определить квадарт перед ней или нет, а взрослые дядьки вектора умножать собрались...
...
Рейтинг: 0 / 0
13.01.2006, 19:07
    #33482411
nikname
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
White OwlКошмар какой!
Код: plaintext
1.
2.
if ((p1.x-p2.x == p3.x-p4.x) && (p1.y-p2.y == p3.y-p4.y) && (p1.x-p3.x == p2.x-p4.x) && (p1.y-p3.y == p2.y-p4.y)) {
  printf("(p1, p2, p3, p4) is a square\n");
}
Первоклашка может определить квадарт перед ней или нет, а взрослые дядьки вектора умножать собрались...
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
                            1 
                           |
                           |
--------- - 1  ------  0  ------  1  -----------
                           |
                           |
                           - 1 
p1      p2     p3    p4
(- 1 , 0 ) ( 0 , 1 ) ( 1 , 0 ) ( 0 ,- 1 )


Верится кошмарный алгоритм в моём мозгу.

 1 . Строим множество пар точек и каждой паре (гипотетической стороне квадрата ставим в соответствие длину стороны.
 2 . Исследуем подмножества с равными длинами сторон если такие имеются. Исследовать нужно как раз скалярным произведением. И нужно учесть порядок обхода.

...
Рейтинг: 0 / 0
13.01.2006, 19:09
    #33482415
neskif
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
Дык ынтеллект - то искусственный он не первоклашка. Он ого-го сказала бы Виктория Прутковская. Он как очень взрослый дядька. Ему все объяснить надо, да очень подробно.
...
Рейтинг: 0 / 0
13.01.2006, 23:40
    #33482621
Шогал
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Прошу помощи !
А можно сделать так:
1) Вычислить длины между парами точек.
2) Отсортировать эти длины.
3) В каждом множестве ищем диагонали, и попарно проверяем те диагонали, длина которых (a*sqrt(2) +- эпсилон) на предмет вхождения в квадрат.
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / Прошу помощи ! / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]