Форум программистов, компьютерный форум CyberForum.ru

несколько точек на плоскости - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ преобразовать программу через switch http://www.cyberforum.ru/cpp-beginners/thread544093.html
помогите преобразовать программу через switch, текст программы: #include <cstdlib> #include <iostream> #include<math.h> #include<conio.h> using namespace std; int main () { float y, t, a ; cout << "a=" ;
C++ Получить матрицу путем деления всех элементов данной матрицы на ее наибольший Всем привет. Суть такова. Написать функцию, выполняющую с матрицей действия, описанные в варианте. Задать в программе 2 матрицы различного размера, и проверить на них работу написанной функции. А вот задание Дана действительная матрица размера nxm, в которой не все элементы равны нулю. Получить новую матрицу путем деления всех элементов данной матрицы на ее наибольший по модулю элемент. http://www.cyberforum.ru/cpp-beginners/thread544091.html
C++ cохранение файлов в формате txt в Windows Forms
Товарищи программисты, помогите мне с и открытием и сохранением файлов в формате txt- пишу текстовый редактор в приложение Windows Forms (Если поможет- Компилятор Microsoft Visual Studio 2008)
C++ преобразовать программу через do и while
не знаю как переделать программу через do и while, помогите, тест программы: #include <cstdlib> #include <iostream> #include <conio.h> #include <stdio.h> using namespace std; int main() { int x,y; for (x=0;x<9;x++)
C++ Класс эллипс заданный двумя полуосями http://www.cyberforum.ru/cpp-beginners/thread544059.html
Класс эллипс заданный двумя полуосями. Конструкторы: 1. Задающий по умолчанию все поля равными нулю (без параметров) 2. Задающий поля равными переданным в качестве параметров значениям. Операции: сравнения (перегрузка операции). Метод: определение площади заданного эллипса
C++ с++ нахождения наименьшего натурального Составьте программу нахождения наименьшего натурального N-значного числа X(X>=10), равного утроенному произведения своих цифр подробнее

Показать сообщение отдельно
odip
Эксперт C++
 Аватар для odip
7226 / 3288 / 59
Регистрация: 17.06.2009
Сообщений: 14,165
10.04.2012, 14:24     несколько точек на плоскости
Если центр симметрии существует, то он должен быть находиться в середине отрезка, соединяющего некую пару точек из этого множества. То есть на самом деле все точки должны делиться на пары, у каждой пары должен быть один и тот же центр симметрии.
Еще вариант - в центре симметрии тоже может находиться точка.

Поэтому алгоритм такой
1) Перебираем все пары несовпадающих точек
Пусть мы взяли точки A и B из множества
Определяем точку C - середина отрезка A,B ( С - это будет центр симметрии )
3) Помечаем точки A,B флагом
Если у нас есть точка С в множестве, то тоже помечаем ее флагом
4) Перебираем все точки не помеченные флагом
Пусть мы взяли точку D
Для точки D ищем точку, симметричную ей точку E относительно C
Если точки E не найдено - значит этот вариант центра симметрии C отпадает и мы переходим на 1
Если мы нашли точку E - значит помечаем точки D,E флагом и переходим на 4
5) Если в итоге все точки помечены флагом
значит точка C - это искомый центр симметрии и задаче решена
6) Если в результате перебора в 1 мы не нашли центр симметрии
то значит центр симметрии не существует

Добавлено через 3 минуты
Не смотря на то что все точки имеют целые координаты
все равно центр симметрии может иметь не целые координаты
Поэтому рекомендую все вычисления проводить в double x,y
И для сравнения координат использовать фиксированную точность EPS, например 0.00001
 
Текущее время: 00:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru