The website "dmilvdv.narod.ru." is not registered with uCoz.
If you are absolutely sure your website must be here,
please contact our Support Team.
If you were searching for something on the Internet and ended up here, try again:

About uCoz web-service

Community

Legal information

1.6 Приложение

1.6 Приложение

Предыдущая  Содержание  Следующая V*D*V

Собрав вместе файлы заголовков, то есть определения абстрактных типов данных, можно написать приложение main.c:

 

#include <stdio.h>

 

#include "new.h"

#include "Object.h"

#include "Set.h"

 

int main () {

    void * s = new(Set);

    void * a = add(s, new(Object));

    void * b = add(s, new(Object));

    void * c = new(Object);

 

    if (contains(s, a) && contains(s, b))

        puts("ok");

 

    if (contains(s, c))

        puts("contains?");

 

    if (differ(a, add(s, a)))

        puts("differ?");

 

    if (contains(s, drop(s, a)))

        puts("drop?");

 

    delete(drop(s, b));

    delete(drop(s, c));

 

    return 0;

}

 

Создаётся набор и к нему добавляются два новых объекта. Если всё хорошо, мы находим эти объекты в наборе и мы не должны найти другой новый объект. Программа должна просто напечатать ok.

Вызов differ() иллюстрирует смысловой момент: математический набор может содержать только одну копию объекта a; попытка добавить его снова должна вернуть исходный объект и differ() должна вернуть ложь. Точно так же после удаления объекта он больше не должен быть в наборе.

Удаление элемента, которого нет в наборе, приведёт к тому, что в delete() передаётся пустой указатель. На данный момент мы придерживаемся семантики free() и требуем, чтобы это было приемлемо.

Предыдущая  Содержание  Следующая