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