pascal(массив)

Ответить
ramilka
Сообщения: 4
Зарегистрирован: 28 апр 2008, 15:00

Даны 10 точек, координаты каждой точки вводятся с клавиатуры. Определить есть ли среди введённых точек квадрат. Нарисовать рисунок.
Хыиуду
Сообщения: 2442
Зарегистрирован: 06 мар 2005, 21:03
Откуда: Москва
Контактная информация:

Расстояние между точками А(x1, y1) и B(x2, y2): sqrt(sqr(x2-x1)+sqr(y2-y1));
Скалярное произведение двух векторов a(a1, a2) и b(b1, b2) равно a1*b1+a2*b2. Векторы перпендикулярны друг другу, если их скалярное произведение равно 0.
Вектор, идущий из точки А(x1, y1) в точку B(x2, y2), имеет координаты (x2-x1, y2-y1).
Таким образом: перебираем в четырех вложенных циклах все точки (две последние проверяем два раза - в прямом порядке и обратном, так, ABCD может не быть квадратом, а ABDC - быть), для каждой четверки точек проверяем следующее:
1. Расстояния между соседними точками равны
2. Углы, образованные сторонами, прямые (т.е. скалярное произведение векторов сторон равно 0).
Если выполняются оба эти условия - очередная четверка точек является квадратом.
Искусство программирования - заставить компьютер делать все то, что вам делать лень.
Для "спасибо" есть кнопка "Спасибо" в виде звездочки внизу под ником автора поста.
Ответить