Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
| wish |
21.12.2007, 17:03
Сообщение
#1
|
|
Пользователь Группа: Пользователи Сообщений: 2 Регистрация: 21.12.2007 Пользователь №: 18 459 |
Всем привет! С наступающим Новым Годом
У меня тут такая задачка появилась, требуется запрограммить на Паскале: Отсортировать геометрические фигуры методом вставки по возрастанию. Размеры фигур создаются рэндомом, собственно как и сама фигура (окружность, прямоугольник или треугольник). Всё б ничего, но нужно это оформить графически. То есть, если фигуры меняются местами, то они должны "переехать в реальном времени"... Что бы самый простой человек увидел и понял что данные фигуры поменялись местами. Если у кого-то есть какие-нибудь (даже бредовые) идеи как это воплотить, буду рад услышать! |
| afterstep |
21.12.2007, 18:45
Сообщение
#2
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
вот сядь, вьірежи из бкмажки фигурьі, и попробуй их посортировать вручную на столе. Методом вставки.
А тогда - опиши тут алгоритм. И дай свои приблизительньіе вьікладки, как бьі ето все написать == А тут уж - народ поможет |
| PolPoll |
21.12.2007, 19:34
Сообщение
#3
|
![]() :) Группа: Главные администраторы Сообщений: 5 858 Регистрация: 24.11.2005 Из: Москва Пользователь №: 5 327 |
Фигуры можно хранить в массиве из записей.
В записи - количество точек и координатым каждой точки фигуры (абсолютные или относительно центра фигуры и координаты абсолютные этого центра тогда) Про анимацию сделай поиск по форуму Программирование(не только по теории). Например по словам "анимация" и "getimage" или лучше по слову "ядро" -------------------- |
| afterstep |
22.12.2007, 9:14
Сообщение
#4
|
|
Пользователь Группа: Активисты Сообщений: 5 336 Регистрация: 14.3.2005 Пользователь №: 2 413 |
я хотел другое усльішать
По площади? по длине? по толщине? по периметру? == Есть типичная радача - оптимальньій разрез. Ну, например, задано N треугольников всяких и разньіх размеров - разместить их на прямоугольнике так, чтоб они не пересекались, а площадь прямоугольника бьіла наименьшей. Как дополнительное условие - разместить на заданном количестве прямоугольников заданного размера. == Но так, как задача ставится в первом посте - она "нерешабельна" - даже не дано начальньіх условий |
| PolPoll |
22.12.2007, 9:26
Сообщение
#5
|
![]() :) Группа: Главные администраторы Сообщений: 5 858 Регистрация: 24.11.2005 Из: Москва Пользователь №: 5 327 |
А мне в голову сразу почему-то пришла сортировка по количеству углов...
-------------------- |
| wish |
22.12.2007, 10:58
Сообщение
#6
|
|
Пользователь Группа: Пользователи Сообщений: 2 Регистрация: 21.12.2007 Пользователь №: 18 459 |
Сортировать нужно по площади фигур.
PolPoll, насчет записи: я поступил немного иначе. Не знаю на сколько это рационально... В общем создал отдельные массивы, каждый из которых хранит определенные данные. Т.е. массив с координатой X правого нижнего угла прямоугольника, с координатой Y, массив с площадью фигуры и т.д. Поскольку я не знаю какая будет допустим третья фигура или пятая(тип фигуры генерится рендомом), то еще создал массив оф чар который хранит букву. Если "с" то прога "понимает" что нужно рисовать окружность, если "r" то прямоугольник(покаместь работаю с 2-мя фигурами, потом планирую добавить трехугольник). В общем алгоритм у меня такой: если площадь фигуры i > площади (i+1) фигуры, то проверяем массив char и узнаем какая фигура i а какая (i+1). Соответсвенно i сдвигаем вправо графически, а i+1 влево. Обнуляем i,что бы проверка опять начиналась сначала, пока не будут упорядочены все фигуры.Есть одно "но" над которым сейчас работаю. Сдвиг осущевствляется циклическим изменением координат X и прорисовкой объекта заново, что бы это сделать каждый раз нужно очищать экран. Естественно затираются все фигуры кроме сдвигаемой. Думаю прийдется в каждом цыкле "сдвига объекта" прорисовавывать все предыдущие фигуры. Другого выхода пока не вижу)) Вообщем описал как смог, буду действовать по намеченному пути. Опять таки принимаются любые идеи! |
![]() ![]() |
|
Текстовая версия | Сейчас: 23.5.2012, 3:13 |