[cdev] задача 4, 135 гр.
Ксения Оботурова
ksun_91 на mail.ru
Сб Дек 11 21:33:29 MSK 2010
memmove(pa->data + nth, pa->data + nth + pa->nelems - nth,
(pa->nelems - (pa->nelems - nth))*sizeof(void *));
nth сокращаются и мы смело выходим за границы массива. Причем перемещаем
зачем-то nth элементов, а должны перемещать другое кол-во.
это я не знаю откуда вы взяли, сейчас когда я отправила задачу последний раз, такого фрагмента кода, вообще не было!!!
был лишь этот, а тут по-моему все правильно...
void
parray_delete_range(struct parray *pa, unsigned int nth, size_t count)
{
if (nth >= pa->nelems){
fprintf(stderr, "cann't delete range\n" ;-) ;
return;
}
if (count > pa->nelems - nth)
count = pa->nelems - nth;
memmove(pa->data + nth, pa->data + nth + count, ((pa->nelems - count))*sizeof(void *));
pa->nelems = pa->nelems - count;
}
если пользователь вышел за пределы массива, то ошибка, если хочет удалить больше , то разрешаем удалять лишь то что есть, и удаляем! Григорий Александрович уже проверял даже этот кусок кода и было правильно, просто когда я сегодня отправила на проверку то случайно отправила не то что хотела... были ошибки в parrey_delete и в parray_delete_nth, а в parray_delete_range было высе правильно, и там уже, т.е в parrey_delete и в parray_delete_nth недочеты исправлены
----------- следущая часть -----------
Вложение в формате HTML было извлечено…
URL: <http://amplab.syktsu.ru/pipermail/cdev/attachments/20101211/a0b279b9/attachment.htm>
Подробная информация о списке рассылки cdev