Завершено
2
07.02.2018, 08:38
21.02.2018, 09:30
Реализовать на языке 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
должна вернуть нулевой указатель как сигнал об ошибке.