Collections: SimpleSet — различия между версиями
Материал из Вики ИТ мехмата ЮФУ
Juliet (обсуждение | вклад) (→См. также) |
Juliet (обсуждение | вклад) |
||
Строка 22: | Строка 22: | ||
<source lang="Delphi"> | <source lang="Delphi"> | ||
interface | interface | ||
+ | |||
+ | type | ||
+ | /// Шаблон класса SimpleSet [Простое множество] | ||
+ | SimpleSet<DataType> = class | ||
+ | private | ||
+ | /// Элементы множества | ||
+ | data := new DynArray<DataType>; | ||
− | + | public | |
− | + | /// <summary> | |
− | + | /// Добавляет элемент во множество, если его там еще нет | |
+ | /// </summary> | ||
+ | /// <param name="x">Добавляемый элемент</param> | ||
+ | procedure Add(x: DataType); | ||
+ | /// <summary> | ||
+ | /// Удаляет элемент из множества, если он там есть | ||
+ | /// </summary> | ||
+ | /// <param name="x">Удаляемый элемент</param> | ||
+ | procedure Remove(x: DataType); | ||
+ | |||
+ | /// <summary> | ||
+ | /// Возвращает истину, если множество содержит элемент | ||
+ | /// </summary> | ||
+ | /// <param name="x">Искомый элемент</param> | ||
+ | function Contains(x: DataType): boolean; | ||
+ | |||
+ | // ---------------------------------- Вывод ---------------------------------- | ||
+ | ///Выводит содержимое множества на консоль | ||
+ | procedure Println(); | ||
+ | end; | ||
implementation | implementation | ||
+ | // ---------------------------- Стандартные методы --------------------------- | ||
+ | {Добавляет элемент x во множество, если его там еще нет} | ||
+ | procedure SimpleSet<DataType>.Add(x: DataType); | ||
+ | begin | ||
+ | if data.Find(x) = -1 then | ||
+ | data.Add(x); | ||
+ | end; | ||
+ | |||
+ | {Удаляет элемент x из множества, если он там есть} | ||
+ | procedure SimpleSet<DataType>.Remove(x: DataType); | ||
+ | begin | ||
+ | var xPos := data.Find(x); | ||
+ | if xPos <> -1 then | ||
+ | data.Remove(xPos); | ||
+ | end; | ||
+ | |||
+ | {Возвращает истину, если множество содержит элемент x} | ||
+ | function SimpleSet<DataType>.Contains(x: DataType): boolean; | ||
+ | begin | ||
+ | result := (data.Find(x) <> -1); | ||
+ | end; | ||
+ | |||
+ | // ---------------------------------- Вывод ---------------------------------- | ||
+ | {Выводит содержимое множества на консоль} | ||
+ | procedure SimpleSet<DataType>.Println(); | ||
+ | begin | ||
+ | data.Println; | ||
+ | end; | ||
</source> | </source> | ||
== Примеры использования == | == Примеры использования == | ||
+ | <source lang="Delphi"> | ||
+ | uses Collections; | ||
+ | |||
+ | begin | ||
+ | // Создание нового объекта простого множества | ||
+ | var ss := new SimpleSet<integer>; | ||
+ | |||
+ | // Добавление элемента во множество | ||
+ | ss.Add(5); ss.Add(-32); ss.Add(-7); ss.Add(43); | ||
+ | |||
+ | // Вывод множества | ||
+ | writeln('Содержимое множества:'); | ||
+ | ss.Println; | ||
+ | writeln(); | ||
+ | |||
+ | // Проверка, содержится ли элемент во множестве | ||
+ | writeln('97 содержится во множестве: ', ss.Contains(97)); | ||
+ | writeln('5 содержится во множестве: ', ss.Contains(5)); | ||
+ | writeln(); | ||
+ | |||
+ | // Удаление элемента из множества | ||
+ | ss.Remove(8); | ||
+ | ss.Remove(-32); | ||
+ | |||
+ | writeln('Содержимое множества после удаления элементов:'); | ||
+ | ss.Println; writeln(); | ||
+ | end. | ||
+ | </source> | ||
== См. также == | == См. также == |
Версия 20:03, 30 апреля 2009
Интерфейс
type SimpleSet<DataType> = class
/// Создает пустое множество
constructor Create;
/// Добавляет элемент x во множество, если его там еще нет
procedure Add(x: DataType);
/// Удаляет элемент x из множества, если он там есть
procedure Remove(x: DataType);
/// Возвращает истину, если множество содержит элемент x
function Contains(x: DataType): boolean;
///Выводит содержимое множества на консоль
procedure Println();
end;
Реализация
interface
type
/// Шаблон класса SimpleSet [Простое множество]
SimpleSet<DataType> = class
private
/// Элементы множества
data := new DynArray<DataType>;
public
/// <summary>
/// Добавляет элемент во множество, если его там еще нет
/// </summary>
/// <param name="x">Добавляемый элемент</param>
procedure Add(x: DataType);
/// <summary>
/// Удаляет элемент из множества, если он там есть
/// </summary>
/// <param name="x">Удаляемый элемент</param>
procedure Remove(x: DataType);
/// <summary>
/// Возвращает истину, если множество содержит элемент
/// </summary>
/// <param name="x">Искомый элемент</param>
function Contains(x: DataType): boolean;
// ---------------------------------- Вывод ----------------------------------
///Выводит содержимое множества на консоль
procedure Println();
end;
implementation
// ---------------------------- Стандартные методы ---------------------------
{Добавляет элемент x во множество, если его там еще нет}
procedure SimpleSet<DataType>.Add(x: DataType);
begin
if data.Find(x) = -1 then
data.Add(x);
end;
{Удаляет элемент x из множества, если он там есть}
procedure SimpleSet<DataType>.Remove(x: DataType);
begin
var xPos := data.Find(x);
if xPos <> -1 then
data.Remove(xPos);
end;
{Возвращает истину, если множество содержит элемент x}
function SimpleSet<DataType>.Contains(x: DataType): boolean;
begin
result := (data.Find(x) <> -1);
end;
// ---------------------------------- Вывод ----------------------------------
{Выводит содержимое множества на консоль}
procedure SimpleSet<DataType>.Println();
begin
data.Println;
end;
Примеры использования
uses Collections;
begin
// Создание нового объекта простого множества
var ss := new SimpleSet<integer>;
// Добавление элемента во множество
ss.Add(5); ss.Add(-32); ss.Add(-7); ss.Add(43);
// Вывод множества
writeln('Содержимое множества:');
ss.Println;
writeln();
// Проверка, содержится ли элемент во множестве
writeln('97 содержится во множестве: ', ss.Contains(97));
writeln('5 содержится во множестве: ', ss.Contains(5));
writeln();
// Удаление элемента из множества
ss.Remove(8);
ss.Remove(-32);
writeln('Содержимое множества после удаления элементов:');
ss.Println; writeln();
end.
См. также
Collections (полный текст модуля):