![]() |
|
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]()
|
|
| Fringe |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.4.2010 Репутация: нет Всего: нет |
Условия задачи таковы:Кольцо шириною 30, внешняя окружность которого проходит как минимум через три точки Т, содержащее максимум точек ТТ.
Господа, помогите пожалуйста, кто чем может, я не могу понять как заставить выводить все генерации графически, программа выводит самую оптимальную и все тут. Как заставить выводить ее все вариации и где больше всего точек лежит в кольце то и окрашивать в иной цвет + выводить информацию об этом. Код обработчика:
Код графики:
Заранее всем спасибо за советы! |
||||
|
|||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Ещё бы, а какую же она будет выводить если судя по коду, вы сначала отыскиваете самую оптимальную комбинацию, а потом её и рисуете.
Очень просто:вы находите первый вариант и считаете сколько у вас там точек, попадает в кольцо и рисуете первым цветом "clYellow", потом второе кольцо - его точки отмечаете "clGreen" и т.д., потом выдаёте информацию о сответствии цветов точек полученным результатам скажем как в Excel'e у графиков с легендой. Есть более сложный вариант, но там нужно уже знать классы или хотябы записи, правда с этим вариантом можно и более красивых вещей добиться(если хотите поясню). Если неправильно понимаю, то попробуйте расписать более детально задачу -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| Fringe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.4.2010 Репутация: нет Всего: нет |
DarkProg, а как сделать чтобы она все выводила?
с цветом все понял, а что за классы такие, можно по подробнее. |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Т.Е. все выводила???? Вы канвас сначала сбрасываете а потом заново рисуете??? Какой у вас опыт программирования???(если вы начинающий, ну т.е. совсем недавно-меньше полу года, то пока я не советую изучать и сильно вдаваться, лучше просто почитывайте книги по остальному, по компонентам и т.д.) -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| Fringe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.4.2010 Репутация: нет Всего: нет |
Ну смотрите, например у меня по координатам получается два кольца, которые построены по трем точкам. В 1 находится больше точек, чем во 2. И на канвас должны выводится оба кольца и то кольцо в котором больше точек, удовлетворяющих условиям, должно окрашиваться в другой цвет.
Опыт с делфи только полгода :( |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Прикрепите весь проект, потому что я не пойму как у вас вообще кольца рисуются, может я смогу тогда понять....
-------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| Fringe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.4.2010 Репутация: нет Всего: нет |
Вот. Тут лежит все.
Работаю в Delphi 2010 Это сообщение отредактировал(а) Fringe - 17.5.2010, 08:44 Присоединённый файл ( Кол-во скачиваний: 6 )
_______________.rar 388,40 Kb |
|||
|
||||
| DarkProg |
|
||||||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Поглядел, наконец-таки(едит стрингридом поуху того к то умудрился в два дня запихать такое число лабораторок и практик)
Обратите внимание на вот этот кусочек кода
Не надо делать перезаписи.(расскажу ка я вам про записи) Итак записи это похоже как тип переменной Объявляется так (сразу Var Form1:TForm1)
Теперь вам нужно объявить массив всех возможных вариантов ваших колец(обычно мне такие структуры нужны в разных частях программы поэтому объявляю их как глобальные переменные)
В результате будет получен набор данных, со всеми кольцами и всеми точками содержащиеся в этом кольце, после чего в дополнительном цикле вы можете их множество раз рисовать, и можете сделать возможность выбора кольца которое будет в данный момент отрисовано. Если что не понятно спрашивайте P.S. в коде могут быть мелкие ошибки, т.к. писал от руки прям в браузере и не проверял Это сообщение отредактировал(а) DarkProg - 18.5.2010, 15:21 -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
||||||
|
|||||||
| Fringe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.4.2010 Репутация: нет Всего: нет |
DarkProg, так... более менее понял что да как, но куда что переписать не понял(с переменными знаю что и куда). Особенно это:
|
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
Каждый раз ты перезаписываешь массив с координатами в результате после выполнения программы возможно отрисовать только то кольцо в которое попало больше всего точек.
Теперь если использовать записи, можно запомнить все расчитанные кольца со всеми точками и соответственно их можно рисовать в любом произвольном порядке(хоть список где будет выбираться какую именно комбинацию рисовать) Поясняю выделенный кусок. В строке объявления переменной нужно объявить массив записей TAllCircles(несколько не корректно назвал, ну да бог с ним), массив нужен для того чтобы запомнить все т.к. одна переменная может запомнить только информацию об одном кольце с точками попадающими в него. Дальше, я не писал, так как посчитал не нужным, нужно определить размер массива(т.к. заранее размер неизветен будем выделять по одному в 8-ой строке написано как это делается) Потом обращаемся к последнему элементу и добавдляем все данные в запись, и массивом загоняем те точки которые попали в кольцо. Я специально задал внутри ещё массив точек попавших в кольцо, чтобы можно было потом их раскрашивать другим цветом. Т.е. увеличить длину массива AllCircles надо в тот момент как только определяется что через три точки можно провести окружность. Я надеюсь так понятнее. Кстати по поводу кода - а не проще ли данные считывать из файла и сразу их кидать и в stringgrid и в те массивы где оно всё хранится при расчётах??? - подумайте над этим. P.S. И ещё я думаю вам обязательно надо купить книгу по Delphi(набираете по отзывам в нете штук 10 вариантов, потом идёте в магазин и выбираете ту в которой для вас понятно написано) - книг у самого не мало и поверьте они весьма полезны -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
| Fringe |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.4.2010 Репутация: нет Всего: нет |
DarkProg, а можете в код это мой все включить? Я не могу понять что-то :(
Скорее всего инженерная графика влияет так негативно :( |
|||
|
||||
| DarkProg |
|
|||
![]() Законченный романтик ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1784 Регистрация: 11.3.2009 Где: Земля Репутация: 4 Всего: 19 |
В ближайший день-два наврядли, а то и вообще не смогу нормально сесть... У меня тут такая вещь типа учёбы, я говорю типа, потому что мне дают задания, лабы и читают лекции, при этом голова не знает что делают руки, посему лопачу дочёрта материала сам и времени пипец не хватает Да чёрт его знает что влияет негативно - может быть просто качество образования.... Вообще совет насчёт книг весьма актуален - попробуйте, может сами дойдёте, пока я буду тут со своимим проблемами разбираться... -------------------- "И твоя голова всегда в ответе за то куда сядет твой зад..." "Я студент - скажите с какого я ВУЗа..." |
|||
|
||||
![]()
|
| Правила форума "Delphi: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |