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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.11.2009, 21:34   #1
Absentik
 
Регистрация: 19.11.2009
Сообщений: 9
По умолчанию Определение параллелограмма с максимальной площадью, Delphi

Здравствуйте.

Задача:
На плоскости задано N параллелограммов координатами своих вершин x[i], y[i]. Определить номер параллелограмма, у которого площадь максимальна.



В Edit1 вводится количество параллелограммов.
В Edit2 и Edit3 координаты первой вершины параллелограмма.
В Edit4 и Edit5 координаты второй вершины параллелограмма.
В Edit6 и Edit7 координаты третьей вершины параллелограмма.
Координата четвертой вершины параллелограмма вычисляется автоматически и выводится в Edit8 и Edit9.

Вверху, в лейбле отображается номер параллелограмма, для которого задаются вершины.
По нажатию кнопки "запуск" подсчитывается площадь и записываем её в массив a[i]. Затем, если номер вводимого параллелограмма < N, то все Edit' ы очищаются и мы вводим координаты следующего параллелограмма, иначе - ищем максимальный элемент массива a[i] и выводим его в ShowMassege.

Трудности заключаются в подсчете площади параллелограммов и автоматическом заполнении Edit8 и Edit9.
Absentik вне форума Ответить с цитированием
Старый 20.11.2009, 04:26   #2
Dmitry333
Пользователь
 
Аватар для Dmitry333
 
Регистрация: 13.11.2009
Сообщений: 60
По умолчанию

Заполнить Edit8 Edit9 поможет random,а найти площадь можно по одной из формул, лучше через высоту, длину стороны и туже самую высоту считай по формулам нахождения растояния между точками.
Dmitry333 вне форума Ответить с цитированием
Старый 20.11.2009, 07:48   #3
Absentik
 
Регистрация: 19.11.2009
Сообщений: 9
По умолчанию

Dmitry333, заполняя рандомом мы получим не всегда параллелограмм.
Это понятно, что вычислять лучше по формуле S(ABCD) = AD * h(AD).
Как вычислить сторону и высоту, опущенную на эту сторону?
Absentik вне форума Ответить с цитированием
Старый 20.11.2009, 08:46   #4
Orakul89
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию

Высота в паралелограмме будет равна разности координат по У, а длина стороны равна корню квадратному из ((x2-x1)^2 + (y2-y1)^2)
где (x1,y1) (x2,y2) координаты точек (например) A и D соответственно.

Последний раз редактировалось Orakul89; 20.11.2009 в 08:48.
Orakul89 вне форума Ответить с цитированием
Старый 20.11.2009, 12:32   #5
dexterua
Пользователь
 
Регистрация: 16.11.2009
Сообщений: 24
По умолчанию

Orakul89
Это будет не верно - высота не разность координат у, точнее верно только в том случае, когда в параллелограмме ABCD сторона AB и CD будет параллельна оси X

В общем случае:
Код:
float a=sqrt((float)((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)));
float b=sqrt((float)((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)));
float c=sqrt((float)((x1-x3)*(x1-x3)+(y1-y3)*(y1-y3)));
float x4=x3+x2-2*x1;
float y4=y3+y2-2*y1;
//полупериметр и площадь
float p=(a+b+c)/2;
float S=2*sqrt(p*(p-a)*(p-b)*(p-c));
x4,y4 - координаты четвертой вершини
S - площадь

P.S на делфи думаю переведете

Последний раз редактировалось dexterua; 20.11.2009 в 12:34.
dexterua вне форума Ответить с цитированием
Старый 20.11.2009, 22:40   #6
Absentik
 
Регистрация: 19.11.2009
Сообщений: 9
По умолчанию

Цитата:
float p=(a+b+c)/2;
А почему периметр находится, как сумма трех сторон? И что за формула нахождения площади такая?
Absentik вне форума Ответить с цитированием
Старый 20.11.2009, 22:54   #7
Скарам
Дружите с Linq ;)
Форумчанин
 
Аватар для Скарам
 
Регистрация: 15.10.2008
Сообщений: 822
По умолчанию

p-это полупериметр треугольника,построенного на трех сторонах(параллелограмм поделили на 2 части диагональю).
S-площадь треугольника(полупериметр которого мы посчитали) умноженная на 2.Геометрия...правда a,b,c я не проверял,но вроде верно..)
Не давай организму поблажки, каждый день тренируй его в шашки..
Скарам вне форума Ответить с цитированием
Старый 21.11.2009, 00:11   #8
Absentik
 
Регистрация: 19.11.2009
Сообщений: 9
По умолчанию

Удалите пожалуйста

Последний раз редактировалось Absentik; 21.11.2009 в 11:12.
Absentik вне форума Ответить с цитированием
Старый 21.11.2009, 02:37   #9
Absentik
 
Регистрация: 19.11.2009
Сообщений: 9
По умолчанию

Цитата:
float x4=x3+x2-2*x1;
float y4=y3+y2-2*y1;
Что-то не подходит.


Площадь вычисляется правельно, только возникли проблемы с отрецательными значениями.
Absentik вне форума Ответить с цитированием
Старый 21.11.2009, 10:30   #10
Orakul89
Пользователь
 
Регистрация: 12.11.2009
Сообщений: 20
По умолчанию

попробуй сделать так:
x4:= x3-x2+x1
y4:=y3-y2+y1
Orakul89 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение параллелограмма с наибольшей площадью. Delphi. Absentik Помощь студентам 0 19.11.2009 17:15
Нахождение в массиве максимальной суммы элементов byte916 Microsoft Office Excel 1 07.10.2009 13:03
постоение параллелограмма luchok Паскаль, Turbo Pascal, PascalABC.NET 5 30.04.2009 21:00
Определение совершенного числа (Delphi) Lew27 Помощь студентам 1 26.04.2009 23:40