[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