[cdev] задача 4, 135 гр.

Grigoriy A. Sitkarev sitkarev на komitex.ru
Вс Дек 5 20:17:31 MSK 2010


Добрый вечер всем.

Перепроверьте вычисления в ф-ии parray_delete_nth(), там где вы 
подсчитываете сколько байт вам нужно переместить. Нужно помнить что в Си 
для арифметических операций приоритеты такие же как в алгебре, т.е. '+' 
и '-' имеют приоритет ниже чем у '/' и '*'. Порядок всегда можно 
изменить скобками круглыми (как в алгебре).

В parray_delete() то же самое замечание.

В parray_delete_range() проверка

if (count >= pa->nelems - nth)

не верна, т.к. здесь надо было проверять на строго "больше". 
Предположим, в массиве есть 4-е элемента, а пользователь захотел удалить 
  начиная нулевого индекса 4-е элемента:

parray_delete(pa, 0, 4);

(4 >= 4 - 0) тогда будет истиной, хотя count вмещается в допустимые пределы.

Код там можно было проще написать, обрезав count до допустимого 
количества, если оно было больше, и делать memmove() дальше одинаково 
для обеих случаев.

Всё остальное вроде бы работает, и поиск и сортировка и обход. Вам 
осталось совсем чуть-чуть.

--
Г.А.

Ксения Оботурова пишет:
> Григорий Александрович, проверьте пожалуйста 
> 




Подробная информация о списке рассылки cdev