![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
пересечения диапазонов
Вика © (2004-07-30 15:29:00)Подскажите плиз.
Юзер в форме вводит три даипазона номеров (начальный и конечный номер каждого диапазона), как сделать проверку не содержится ли пересечений или не встречаются ли номера (или единичный номер) одного диапазона в каком-либо другом.
Заранее спасибо.
Юрий Зотов (2004-07-30 17:15:00) [21]> Rem (30.07.04 16:59) [19]
Скажите, а Вы в [13]-[15] ничего странного не замечаете? Ведь, по идее, и правда даже откомпилироваться было не должно. А оно не только компилируется, но еще и работает, причем даже и с явно неправильными числами? Что это? Почему? Баг? Или нет?
Разве это не важнее и не интереснее, чем детский вопрос, на который Вами же уже давныи-давно был дан ответ?
KSergey (2004-07-30 17:10:00) [22]> [17] default © (30.07.04 16:58)
> KSergey © (30.07.04 16:55) [16]
> на счёт ограничения на 256 элементов?
> написать свой класс с произвольным числом элементов
> это очень просто
А кратенько для мееня можно? Особенно как это соотнести со стандартными множествами. И при чем тут вообще класс?
Я не грублю, я весь в непонятках... Ну не могли же Digitman и ЮЗ на столько заблуждаться... (обманывать? ;)
Sandman25 (2004-07-30 17:05:00) [23]Вру, [13] не мой :)
Sandman25 (2004-07-30 17:04:00) [24][19] Rem (30.07.04 16:59)
Знаете, я заметил Ваши ответы во многих других ветках, и мне очень понравился уровень Ваших знаний. Но вот чего я не понимаю, так это:
1) Почему Вы считаете, что я мастер? (посты 11, 13 и 14 мои)
2) Почему Вы считаете, что я пытаюсь ответить на вопрос автора анкеты?
3) Неужели Вам непонятно, что я открыл для себя нечто новое и интересное? То, что это должно было быть в другой ветке, в данном случае неважно.
Rem (2004-07-30 17:01:00) [25]2 KSergey
см. [5]
Rem (2004-07-30 16:59:00) [26][6], [11], [13], [14]...
Классика www.delphimaster.ru: Задан вопрос. Дан неверный ответ. Мастера сидят и в ладоши хлопают. Красота!
"Сам играю. Сам танцую." (с)
P.S. Пора переименовывать сайт в www.narciss.ru
Sandman25 (2004-07-30 16:58:00) [27]Да, берет младший байт.
default (2004-07-30 16:58:00) [28]KSergey © (30.07.04 16:55) [16]
на счёт ограничения на 256 элементов?
написать свой класс с произвольным числом элементов
это очень просто
KSergey (2004-07-30 16:55:00) [29]Люди, все интересно
Но что делать с [12] Rem (30.07.04 16:44)?
Sandman25 (2004-07-30 16:54:00) [30]Кстати, почему-то сработало и при Edit2.Text = '12345', что гораздо больше 255 :)
Хотя, наверное, использовало только младший байт, лень разбираться.
Sandman25 (2004-07-30 16:52:00) [31][13] Юрий Зотов © (30.07.04 16:50)
procedure TForm1.bt1Click(Sender: TObject);
var
A: set of byte;
begin
A := [StrToInt(Edit1.Text)..StrToInt(Edit2.Text)];
if 3 in A then
Caption := '12';
end;
Да, я в шоке... Всегда считал, что это даже не откомпилируется, а оно работает :)
Юрий Зотов (2004-07-30 16:50:00) [32]> Sandman25 © (30.07.04 16:28) [11]
A := [Left..Right];
:о)
Rem (2004-07-30 16:44:00) [33]2 Анонимщик
Спасибо за совет, но я уже читал это когда-то.
И, если память мне не изменяет, то во множестве может быть не более 256 элементов. В Вопросе, как мне показалось, фигурируют другие значения.
Sandman25 (2004-07-30 16:28:00) [34]ИМХО проблема не с использованием множества, а его построением.
Ну стало известно, что A=[1..8],
причем 1 - это значение Left, а 8 - значение Right.
Теперь писать
for I := Left to Right do
Include(A, I);
?
Юрий Зотов (2004-07-30 16:24:00) [35]> Анонимщик © (30.07.04 16:12) [7]
> Сколько в множестве может быть элементов?
> Да и потом, медленно будет
Если Вы полагаете, что операция пересечения множеств проверяет вхождение каждого элемента, то Вы ОЧЕНЬ сильно заблуждаетесь.
Это примерно то же самое, что и обыкновенное AND. Выполняется почти мгновенно.
Анонимщик (2004-07-30 16:19:00) [36]Rem
См. справку по set operators
Но это извращение
Rem (2004-07-30 16:15:00) [37]2 Digitman
>>можно использовать встроенный языковой механизм операций над множествами
что вы имеете в виду? кто вам про это сказал, или где вы про это прочитали?
Анонимщик (2004-07-30 16:12:00) [38]Сколько в множестве может быть элементов?
Да и потом, медленно будет, [5] - самый быстрый способ.
Юрий Зотов (2004-07-30 16:07:00) [39]Стандартный способ - множества:
if множество1 * множество2 = [] then ... // пересечения нет
Rem (2004-07-30 16:05:00) [40]IsCross := ((D1_Beg <= D2_End) and (D1_End >= D2_Beg)) or
((D2_Beg <= D3_End) and (D2_End >= D3_Beg)) or
((D1_Beg <= D3_End) and (D1_End >= D3_Beg));