Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

пересечения диапазонов


Страницы:   1 2 3

Вика ©   (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));


Страницы:   1 2 3

Наверх

Титульная страница Поиск, карта сайта Написать письмо