Задание № 26

Студент

Бурдастых Андрей

Задача

Массив записей

Состояние

Завершено

Баллов

2

Дедлайн
29 сентября 2014
Назначено

15.09.2014, 11:25

Завершено

22.09.2014, 13:24

Реализовать на языке C модуль для работы с одномерным динамическим массивом, хранящим данные произвольного типа.

Примерный интерфейс:

typedef struct _RecordArray {
    // ...
} RecordArray;

// Создать новый массив начального размера size, размер элемента record_size
RecordArray *ra_create(size_t size, size_t record_size);

// Уничтожить массив
void ra_delete(RecordArray *arr);

// Получить указатель на запись из массива
void *ra_get(RecordArray *arr, size_t idx);

// Заменить запись в массиве, скопировав данные из record
void ra_set(RecordArray *arr, size_t idx, void *record);

При передаче неверного индекса (который должен удовлетворять условию 0 <= idx < size) модуль должен работать корректно: ra_get должен вернуть 0, а ra_set не должен ничего копировать. Для ra_create нулевое значение size является корректным (структура порождается, но функции доступа ничего не делают). Значение же record_size не может быть равно 0 — в этом случае ra_create должна вернуть нулевой указатель как сигнал об ошибке.

Действия