<HTML><BODY>
memmove(pa->data + nth, pa->data + nth + pa->nelems - nth,<br>
(pa->nelems - (pa->nelems - nth))*sizeof(void *));<br>
nth сокращаются и мы смело выходим за границы массива. Причем перемещаем<br>
зачем-то nth элементов, а должны перемещать другое кол-во.<br>
<br>
это я не знаю откуда вы взяли, сейчас когда я отправила задачу последний раз, такого фрагмента кода, вообще не было!!!<br>
<br>
был лишь этот, а тут по-моему все правильно...<br>
void<br>
parray_delete_range(struct parray *pa, unsigned int nth, size_t count)<br>
{<br>
        if (nth >= pa->nelems){<br>
                fprintf(stderr, "cann't delete range\n" ;-) ;<br>
                return;<br>
        }<br>
        if (count > pa->nelems - nth)<br>
                count = pa->nelems - nth;<br>
        memmove(pa->data + nth, pa->data + nth + count, ((pa->nelems - count))*sizeof(void *));<br>
        pa->nelems = pa->nelems - count;<br>
}<br>
<br>
если пользователь вышел за пределы массива, то ошибка, если хочет
удалить больше , то разрешаем удалять лишь то что есть, и удаляем!
Григорий Александрович уже проверял даже этот кусок кода и было
правильно, просто когда я сегодня отправила на проверку то случайно
отправила не то что хотела... были ошибки в parrey_delete и в
parray_delete_nth, а в parray_delete_range было высе правильно, и там
уже, т.е в parrey_delete и в parray_delete_nth недочеты исправлены</BODY></HTML>