Opened 5 years ago

Closed 5 years ago

Last modified 5 years ago

#248 closed ожидается проверка (задача сдана)

WW #4

Reported by: Maria Chizhova Owned by: Egor Suvorov
Component: WW_mergesort Version: 3.0
Keywords: Cc:

Description


Change History (8)

comment:1 Changed 5 years ago by Egor Suvorov

Owner: changed from Egor Suvorov to Maria Chizhova
Type: ожидается проверкаожидаются исправления

Ура, 1/10 баллов за корректность есть :)

По стилю на будущее:

  1. Можно и нужно использовать strcmp из стандартной библиотеки вместо ручного my_strcmp.

comment:2 Changed 5 years ago by Maria Chizhova

Owner: changed from Maria Chizhova to Egor Suvorov
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:3 Changed 5 years ago by Egor Suvorov

Owner: changed from Egor Suvorov to Maria Chizhova
Type: ожидается проверкаожидаются исправления

Впечатляет, особенно потому что это первая попытка.

Корректность 6/7:

  1. Выводятся лишние пробелы в конце строк.
  2. В задании просят реализовать копирование памяти руками. memcpy — это хорошо (а memmove — ещё лучше), но конкретно тут напишите, пожалуйста, свою функцию вроде my_memcpy (кажется, вам даже не требуется, чтобы она работала с пересекающимися диапазонами памяти).
  3. Арифметика указателей с void* — это расширение GCC (о чём он предупредит, если добавить опцию -pedantic), лучше добавьте явное преобразование в char* перед арифметикой.
  4. Для бонуса не хватает проверки возвращаемого mergesort значения.

Стиль 2/3:

  1. Перемешаны табы и пробелы.
  2. Придерживайтесь одного стиля и именовании функций и переменных. В Си обычно принят snake_case: a_len вместо aLen и int_compare вместо intCompare.
  3. Добавьте в конец main в ветке else падение программы, например: assert(!"Unknown type to sort"); (стандартный трюк из Си).
  4. Любой указатель автоматически преобразуется в void*, писать (void*) необязательно.
  5. В merge параметр array лучше назвать out/result.
  6. А параметры a и bl/r, чтобы было соединение с left/right (которые лучше назвать l_pos/r_pos). Или left + left_pos.
  7. Вместо aSize > left пишите left < aSize. Аналогично с bSize <= right.

comment:4 Changed 5 years ago by Maria Chizhova

Owner: changed from Maria Chizhova to Egor Suvorov
Type: ожидаются исправленияожидается проверка
Version: 2.03.0

comment:5 Changed 5 years ago by Egor Suvorov

Owner: changed from Egor Suvorov to Maria Chizhova
Type: ожидается проверкаожидаются исправления

Корректность 6.5/7:

  1. my_memcpy не используется за пределами mergesort.c => не должна быть объявлена в mergesort.h.

Стиль 2.5/3:

  1. Пока всё ещё перемешаны табы и пробелы (см. main.c).
  2. В merge объявите переменные как можно позже, после if.
  3. elements --> elements_total, чтобы не перепутать случайно с l_size/r_size.

Бонус на 1/1 есть.

comment:6 Changed 5 years ago by Maria Chizhova

Owner: changed from Maria Chizhova to Egor Suvorov
Type: ожидаются исправленияожидается проверка

comment:7 Changed 5 years ago by Egor Suvorov

Resolution: задача сдана
Status: assignedclosed

Есть! 11/10, поздравляю!

По стилю:

  1. Не очень имена в my_memcpy: я бы там скорее сделал cur_dest/cur_src и orig_dest/orig_src. Или просто цикл с i и dest[i] = src[i].

comment:8 Changed 5 years ago by Egor Suvorov

Забыл замечание (баллы уже не меняются): пожалуйста, не используйте арифметику с void*. Это расширение GCC. Кастуйте к char* (можно проверить, добавив опцию -pedantic).

Note: See TracTickets for help on using tickets.