Opened 5 years ago

Closed 5 years ago

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

WW #2

Reported by: pshek.maksim Owned by: Egor Suvorov
Component: WW_strings Version: 2.0
Keywords: Cc:

Description


Change History (3)

comment:1 Changed 5 years ago by Egor Suvorov

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

Корректность:

  1. Названия файлов не соответствуют заданию.
  2. Имя исполняемого файла по заданию — lab_02.
  3. Непонятно, зачем main.c включает str.h.
  4. Вы не вызываете тестовые функции. Конструкция void test_my_strcpy(); — это объявление функции, а не вызов. Внутри другой функции тоже можно писать (зачем — отдельный вопрос :)
  5. Сигнатуры не в точности соответствуют стандарту.
  6. У тестовых функций нет параметров => в сигнатуре должно быть (void), иначе в языке Си это означает "любые параметры" (в C++ не так).
  7. Непонятно, зачем test_str.h включает str.h.
  8. my_strlen на первый взгляд работает неверно (но тесты не запускаются из-за всех проблем выше).

Стиль:

  1. Ставьте отступы во всех блоках и внутри фигурных скобок.
  2. Вместо '\0' лучше использовать просто 0.
  3. Лишний перевод строки в сигнатурах функций my_*, у нас нет такого жёсткого ограничения по максимальной длине.
  4. my_strscmp можно сильно упростить.

Так что пока, увы, 0.

comment:2 Changed 5 years ago by pshek.maksim

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

sorry

comment:3 Changed 5 years ago by Egor Suvorov

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

До дедлайна, увы, исправлений не было, так что остаётся ноль.

Но на всякий случай проверена последняя ревизия 875.

Корректность:

  1. У тестовых функций нет параметров => в сигнатуре должно быть (void), иначе в языке Си это означает "любые параметры" (в C++ не так).
  2. Зависимости от заголовков в Makefile не соответствует реально включаемым заголовкам: test.c не включает str.h, но зависит от него.

Если бы были баллы за корректность, то 6/7:

  • Корректные заголовки +1
  • Ваши тесты проходят +1
  • Корректный strcpy и тест +1
  • Корректный strcat и тест +1
  • Корректный strcmp и тест +1
  • Корректный strlen и тест +1

Если бы были баллы за стиль, то 1/3:

  1. Лишний перевод строки в сигнатурах функций my_*, у нас нет такого жёсткого ограничения по максимальной длине.
  2. Вместо '\0' лучше использовать просто 0.
  3. В my_strlen лучше сразу завести переменную типа size_t.
  4. my_strcmp можно сильно сократить код, если убрать фигурные скобки и написать через конструкцию else if. А ещё в конце случай нуля ничем от остальных не отличается (пока у нас нет символов с отрицательными кодами).
  5. Абсолютно ненужные malloc и free: можно просто завести локальный массив соответствующего размера.
  6. Ставьте пробелы вокруг бинарных операторов: x[a + b] = y[c];
  7. Используйте для отступов либо везде пробелы, либо везде табы, иначе это плохо отображается в редакторах, где таб не равен вашему по ширине. В любом нормальном редакторе есть кнопка "заменять все табы на пробелы".
  8. Слишком сложный код тестов: вы там копируете strcmp, а надо просто проверить все байты массива по очереди.
  9. В тестах можно сравнивать прямо строковые литералы (они уже лежат в константной памяти, на них можно брать указатели), незачем их сначала класть в массив.
  10. Не надо делать переменную int sample = 0, которую вы используете только на следующей строчке и никогда не меняете. Просто сравните с нулём.
Note: See TracTickets for help on using tickets.