Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841

Распределение по StringGrid

18.11.2013, 18:55. Показов 1063. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток. Есть следующая задача: даны промежутки времени и есть StringGrid (в шапке прописываю числа) промежутков времени рандомное количество. Нужно так их распределить в StrinGrid что бы они не накладывались друг на друга (строк фиксированное количество). Т.е. вот как на рисунке:

Заранее извество что их можно расположить без накладок друг на друга
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.11.2013, 18:55
Ответы с готовыми решениями:

Вывести данные из StringGrid-ов на двух формах в StringGrid на третьей форме
Помогите,не разбираюсь,только учусь:(:wall:...Вообщем,имеется программа с 3 формами. На первой из них находится вводный StringGrid с...

Как соединить StringGrid с другим StringGrid (Rad xe8)
Здраствуйте. Проблема заключается в следующем: Есть таблица которая указана на 1 изображении дание с которой нада синхронизировать с...

Сохранение из StringGrid массива в файл и загрузка из файла в StringGrid
Всем доброго времени суток =) У меня есть загрузка массива из StringGrid на Delphi 2010: //загрузка из файла procedure...

18
 Аватар для QWIPQ
144 / 123 / 14
Регистрация: 10.10.2011
Сообщений: 366
Записей в блоге: 2
18.11.2013, 21:00
у самого стоит такая задача, только у меня:
1) заранее известный интервал времени год текущий и будующий
2) строк не фиксированное кол-во строк, а динамическое
3) необходимо выводить пересечение временных интервалов

на данном этапе думаю как это решать, в чем хранить данные и т.д.
P.S. раз появился единомышленник думаю начну решать сегодня...
1
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
19.11.2013, 06:35
Цитата Сообщение от DrSMERTb Посмотреть сообщение
Заранее извество что их можно расположить без накладок друг на друга
промежутки я так понял задаются просто кол-вом дней? а не начало-конец?
но тогда непонятно в чем проблема, раз известно что их можно расположить без накладок, т.е. делаем друг за другом и все.
если же все-таки задаются как начало-конец, то тоже непонятно, что мы можем двигать?
поясните.
1
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
19.11.2013, 07:57  [ТС]
AntonChik, мы можем по строкам вверх вниз перемещать. И там начало и конец задаётся
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
19.11.2013, 08:01
Цитата Сообщение от DrSMERTb Посмотреть сообщение
мы можем по строкам вверх вниз перемещать
а что это дает? как с этим связано пересечение/непересечение ?
1
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
19.11.2013, 08:02  [ТС]
AntonChik, ну если допустим пересекаются на первой строчке то необходимо спустить на строку ниже.
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
19.11.2013, 08:15
"в одной строке один промежуток" это неверно?
т.е. промежутки не должны пересекаться в пределах одной строки? и надо разложить в минимальное число строк?
1
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
19.11.2013, 10:01  [ТС]
нет строк строго ограниченное количество а промежутков времени неогшраниченное количество, но их можно расположить по этим строкам без пересечений
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
19.11.2013, 10:08
требований к алгоритму нет?
а то может и brutal force сгодится)
вообще задачка интересная, надо будет подумать, деревце строить... выращивать точнее.
1
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
19.11.2013, 10:14  [ТС]
AntonChik, ну вот только на метод "грубой силы" и думаю
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
19.11.2013, 10:24
ну это крайний вариант.
тут стоит попробовать решить рекурсивно.
написать процедуру на вход которой передаются расставленные промежутки с указанием, в какую строку они помещены, и нерасставленные промежутки.
процедура должна будет проверить не найдено ли уже решение (это если нерасставленных 0) иначе перебрать в цикле нерасставленные промежутки и попытаться каждый вставить в каждую строку, в случае успеха вставки вызывая себя рекурсивно.
что скажете?
1
 Аватар для QWIPQ
144 / 123 / 14
Регистрация: 10.10.2011
Сообщений: 366
Записей в блоге: 2
19.11.2013, 20:57
сравнить интервалы времени нельзя?
каждая строка - интервал времени... вопрос в том как этот интервал считать... можно сперва создать небольшой "календарик" по дате закрытия строки (промежуток)...

если в двух словах дата начала или конца не должна попадать в новый временной интервал!...
P.S. временные переменные если не ошибаюсь можно сравнивать так же как и обычные числа

Добавлено через 11 минут
есть такие команды как: StrToDate, DateToStr

Добавлено через 5 минут
ну если совсем туго то ВОТ
1
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
20.11.2013, 11:23
Цитата Сообщение от QWIPQ Посмотреть сообщение
сравнить интервалы времени нельзя?
не понятно к чему вы это? интервалы сравнивать можно, даже нужно, без этого никак.

алгоритм я предложил, реализовывать самому нет времени, далее могу только дать пояснения или подсказки.
1
 Аватар для DrSMERTb
64 / 40 / 10
Регистрация: 12.11.2010
Сообщений: 841
20.11.2013, 15:47  [ТС]
Всё сделал решение. Получается выстраиваю цепочки из этих промежутков с пометкой в какую строку буду заносить, после того как это сделано просто не задумываясь вношу их в StringGrid и всё. Всем спасибо за участие.
0
 Аватар для QWIPQ
144 / 123 / 14
Регистрация: 10.10.2011
Сообщений: 366
Записей в блоге: 2
20.11.2013, 21:38
Цитата Сообщение от DrSMERTb Посмотреть сообщение
ну вот только на метод "грубой силы" и думаю
Цитата Сообщение от AntonChik Посмотреть сообщение
не понятно к чему вы это? интервалы сравнивать можно, даже нужно, без этого никак.
так я про то и говорил что прежде чем чет строить и выводить в одну прямую произвести сравнение интервалов и всего делов, после сравнения у нас появится несколько групп интервалов (количество групп будет зависеть от фиксированного числа строк + 1 группа, эта группа будет говорить о том что данный промежуток ни в одну строчку без пересечения вписать нельзя). Сравнение интервалов даст возможность их промаркировать по номерам строк после чего смело выводить их в StringGrid

Добавлено через 1 минуту
Цитата Сообщение от DrSMERTb Посмотреть сообщение
с пометкой в какую строку буду заносить, после того как это сделано просто не задумываясь вношу их в StringGrid
как я понял он это и сделал
1
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
21.11.2013, 05:33
Цитата Сообщение от QWIPQ Посмотреть сообщение
(количество групп будет зависеть от фиксированного числа строк + 1 группа, эта группа будет говорить о том что данный промежуток ни в одну строчку без пересечения вписать нельзя)
кол-во групп не должно ни от чего зависеть, по условию оно равно фиксированному числу строк.
а простое сравнение(хотя непонятно что подразумевается под простым) не поможет, т.к. возникнут варианты и все их надо будет рассмотреть, т.е. без тупого перебора или умной рекурсии не обойтись.
1
 Аватар для QWIPQ
144 / 123 / 14
Регистрация: 10.10.2011
Сообщений: 366
Записей в блоге: 2
21.11.2013, 17:36
Цитата Сообщение от AntonChik Посмотреть сообщение
кол-во групп не должно ни от чего зависеть, по условию оно равно фиксированному числу строк.
согласен, в условие задано фиксированное количество строк(что соответствует числу групп), а теперь представь что у нас появился интервал который НЕЛЬЗЯ вписать в строки! что ты с ним сделаешь? а если он будет ни один а 5 допустим! необходима так же индексация для них и предоставление пользователю информации о том, что данные интервалы вписать без пересечения нельзя (можно сказать проверка на ошибку элементарная)!
Цитата Сообщение от AntonChik Посмотреть сообщение
а простое сравнение(хотя непонятно что подразумевается под простым) не поможет
почему? отрезок - это прямая имеющая начало и конец! в нашем случае это прямая с координатами начала и конца!
два отрезка лежащие на одной прямой не пересекаются если координаты конца и начала одного отрезка не лежат между координатами начала и конца другого! что тут трудного-то?
по условию как он и сказал даны случайные временные рамки, которые отображены по столбцам, они и используются при задании интервалов и заполнения таблицы, значит у нас есть:
x1, x2 - координаты начала отрезков наших
y1, y2 - координаты конца
и сравнив их мы получим наше решение!!
0
1090 / 588 / 121
Регистрация: 11.11.2008
Сообщений: 1,544
22.11.2013, 05:14
Цитата Сообщение от QWIPQ Посмотреть сообщение
а теперь представь что у нас появился интервал который НЕЛЬЗЯ вписать в строки!
по условию задачи
Цитата Сообщение от DrSMERTb Посмотреть сообщение
Заранее известно что их можно расположить без накладок друг на друга
Цитата Сообщение от QWIPQ Посмотреть сообщение
x1, x2 - координаты начала отрезков наших
y1, y2 - координаты конца
и сравнив их мы получим наше решение!!
не получим, т.к. просто пересравнивание каждого отрезка с каждым это лишь получение информации для дальнейшей правильной расстановки, что и будет уже решением.
вообще вся суть в расстановке, не знаю что вы так привязались к сравнению.
0
 Аватар для QWIPQ
144 / 123 / 14
Регистрация: 10.10.2011
Сообщений: 366
Записей в блоге: 2
25.11.2013, 17:21
Цитата Сообщение от AntonChik Посмотреть сообщение
получение информации для дальнейшей правильной расстановки, что и будет уже решением.
честно я не предполагал, решением является только если это отобразить в StringGrid
Цитата Сообщение от AntonChik Посмотреть сообщение
т.к. просто пересравнивание каждого отрезка с каждым это лишь получение информации для дальнейшей правильной расстановки
и тем более не думал что алгоритм решения задачи не является решением задачи
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.11.2013, 17:21
Помогаю со студенческими работами здесь

Есть 2 StringGrid в С++ Builder, и нужно взять оттуда данные и заполнить ими 3 StringGrid, как бы сложить 2 та
Код C++ void __fastcall TForm1::Button1Click(TObject *Sender) { int i,j; float p,p1; for (i = 0; i < 48; i++) { ...

Перенос данных из одного StringGrid в другой StringGrid
Здравствуйте . Есть очередной вопрос с матрицами. Есть два StringGrid. В одном столбце первой матрицы есть цифровые значения. Есть Edit....

Возможность вручную писать данные в ячейки StringGrid и заполнение ячеек StringGrid данными из файла после нажатия кнопки
Здравствуйте! Помогите, пожалуйста. Мне необходимо сделать следующее: реализовать возможность вручную писать данные в ячейки StringGrid...

Распределение символов из Edit/Label в StringGrid - Lazarus
Всем доброго времени суток! Имеется следующая проблема: я создала программу, которая переводит код из десятичной системы счисления в...

Delphi 7 Stringgrid Нужно сделать цикл для заполнения Stringgrid данными из другого Stringgrid
Нужно чтобы из Stringgrid1 данные переносились в Stringgrid2 Но ТОЛЬКО ПО УСЛОВИЮ Таблицы Stringgrid2 На рис всё показано. За работающий...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс. Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа. В качестве фильтра для отбора служит значение перечислений. / / Событие "НачалоВыбора" реквизита на форме. . .
Переходник USB-CAN-GPIO
Eddy_Em 20.03.2026
Достаточно давно на работе возникла необходимость в переходнике CAN-USB с гальваноразвязкой, оный и был разработан. Однако, все меня терзала совесть, что аж 48-ногий МК используется так тупо: просто. . .
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru