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) 

Подскажите плиз.
Юзер в форме вводит три даипазона номеров (начальный и конечный номер каждого диапазона), как сделать проверку не содержится ли пересечений или не встречаются ли номера (или единичный номер) одного диапазона в каком-либо другом.
Заранее спасибо.


default   (2004-07-30 22:13:00) [1]

KSergey ©   (30.07.04 17:10) [23]
ничего особенного я не сказал
ЛИШЬ то что ограничение в 256 элементов можно ликвидировать реализовал ту же работу с множествами какую предоставляют средства Delphi, но самому, в принципе, конечно, это не обязательно должен быть класс, но пользоваться классом чем отдельными подпрограммами будет удобней
вот и всё
ничего из сказанном не противоречит постам указанных авторов


Rem   (2004-07-30 19:23:00) [2]

2 [42]
set of integer = [0..4294967295]
Для хранения 1 множества получим 536870912 байта.
Итого, приводя к "удобоваримому" виду, 512 мегабайт.
Не много ли?
Я думаю, проще будет хранить список диапазонов, входящих в множество.


pasha_golub   (2004-07-30 18:51:00) [3]

Rem   (30.07.04 18:17) [41]

- разработать механизм хранения множеств


А чего его реализовывать? По-моему, очевидно. Только расширить для интеджер.

А про класс, абсолютно согласен. Вполне здравая мысль.


Rem   (2004-07-30 18:17:00) [4]

2 [23]

- разработать механизм хранения множеств (например, для integer)
- реализовать его в классе
- реализовать набор методов оперирования и взаимодействия с другими множествами (как этого класса, так и стандартными)
- назвать класс TIntegerSet :)


Ega23   (2004-07-30 18:06:00) [5]

Гы. LISP использовать. Для создания множеств. :о)


Юрий Зотов   (2004-07-30 18:05:00) [6]

Что ж, уговорили...
:о)


Rem   (2004-07-30 18:03:00) [7]

В [14], [15] та же самая ситуация. Компилятор не знает значений StrToInt(Edit1.Text) и StrToInt(Edit2.Text), поэтому такой код он допускает, а при включенных проверках возникает "Range check error".


Sandman25   (2004-07-30 17:54:00) [8]

Забыл сделать build. range checking все-таки ловит ошибку.


Sandman25   (2004-07-30 17:52:00) [9]

[35] Юрий Зотов ©   (30.07.04 17:50)

Кстати, ни range checking, ни overflow checking ошибку не обнаруживают.


Юрий Зотов   (2004-07-30 17:50:00) [10]

> Rem   (30.07.04 17:38) [29]

Нет, это не странно. Компилятор заранее не может знать значений b и i, поэтому такой код он допускает, а ошибки не возникает потому что отключены проверки.

А в [14]-[15] ситуация другая.


Sandman25   (2004-07-30 17:46:00) [11]

[32] Анонимщик ©   (30.07.04 17:44)

Вы серьезно спрашиваете?


Sandman25   (2004-07-30 17:45:00) [12]

Байты нумеруются слева направо, биты справа налево. То есть
[11] хранится как $00 08 00 00...


Анонимщик   (2004-07-30 17:44:00) [13]

Что значит "отвечает"?


Sandman25   (2004-07-30 17:43:00) [14]

32 байта. Каждый бит отвечает за 1 элемент.


Анонимщик   (2004-07-30 17:41:00) [15]

Ладно, давайте разберемся.
Первый вопрос - где в памяти и в каком виде хранится переменная типа "множество"?


Rem   (2004-07-30 17:38:00) [16]

2 [24]

var
 b: byte;
 i: integer;
begin
 b := 100;
 i := 300;
 b := b + i;
end;


Это тоже странно?


Sandman25   (2004-07-30 17:28:00) [17]

[27] Rem   (30.07.04 17:25)

У меня это вообще любимое число. Наверное, поэтому и присвоил :)
[/Offtop]


Rem   (2004-07-30 17:25:00) [18]

2 [21]
1. Все мастера. Каждый в своем.
2. Мне так показалось по контексту.
3. Прошу прощения.

2 [22]
 А мне так импонировало число 13! :)


Sandman25   (2004-07-30 17:21:00) [19]

var
 B: Word;
begin
 B := 257;
 ShowMessage(IntToStr(Ord(B in [B])));
 ShowMessage(IntToStr(Ord(B-256 in [B])))
end;

выводит 0 и 1. Именно в таком порядке :)


Romkin   (2004-07-30 17:18:00) [20]

Пересечение диапазонов:
1. Упорядочить диапазоны по возрастанию нижних границ.
2. Если после этого нижняя граница диапазона не больше верхней границы предыдущего диапазона - есть пересечение


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

Наверх

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