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
Owner: | changed from Egor Suvorov to pshek.maksim |
---|---|
Type: | ожидается проверка → ожидаются исправления |
comment:2 Changed 5 years ago by
Owner: | changed from pshek.maksim to Egor Suvorov |
---|---|
Type: | ожидаются исправления → ожидается проверка |
Version: | 1.0 → 2.0 |
sorry
comment:3 Changed 5 years ago by
Resolution: | → задача НЕ сдана |
---|---|
Status: | assigned → closed |
До дедлайна, увы, исправлений не было, так что остаётся ноль.
Но на всякий случай проверена последняя ревизия 875.
Корректность:
- У тестовых функций нет параметров => в сигнатуре должно быть
(void)
, иначе в языке Си это означает "любые параметры" (в C++ не так). - Зависимости от заголовков в
Makefile
не соответствует реально включаемым заголовкам:test.c
не включаетstr.h
, но зависит от него.
Если бы были баллы за корректность, то 6/7:
- Корректные заголовки +1
- Ваши тесты проходят +1
- Корректный strcpy и тест +1
- Корректный strcat и тест +1
- Корректный strcmp и тест +1
- Корректный strlen и тест +1
Если бы были баллы за стиль, то 1/3:
- Лишний перевод строки в сигнатурах функций
my_*
, у нас нет такого жёсткого ограничения по максимальной длине. - Вместо
'\0'
лучше использовать просто0
. - В
my_strlen
лучше сразу завести переменную типаsize_t
. my_strcmp
можно сильно сократить код, если убрать фигурные скобки и написать через конструкциюelse if
. А ещё в конце случай нуля ничем от остальных не отличается (пока у нас нет символов с отрицательными кодами).- Абсолютно ненужные
malloc
иfree
: можно просто завести локальный массив соответствующего размера. - Ставьте пробелы вокруг бинарных операторов:
x[a + b] = y[c];
- Используйте для отступов либо везде пробелы, либо везде табы, иначе это плохо отображается в редакторах, где таб не равен вашему по ширине. В любом нормальном редакторе есть кнопка "заменять все табы на пробелы".
- Слишком сложный код тестов: вы там копируете
strcmp
, а надо просто проверить все байты массива по очереди. - В тестах можно сравнивать прямо строковые литералы (они уже лежат в константной памяти, на них можно брать указатели), незачем их сначала класть в массив.
- Не надо делать переменную
int sample = 0
, которую вы используете только на следующей строчке и никогда не меняете. Просто сравните с нулём.
Note: See
TracTickets for help on using
tickets.
Корректность:
lab_02
.main.c
включаетstr.h
.void test_my_strcpy();
— это объявление функции, а не вызов. Внутри другой функции тоже можно писать (зачем — отдельный вопрос :)(void)
, иначе в языке Си это означает "любые параметры" (в C++ не так).test_str.h
включаетstr.h
.my_strlen
на первый взгляд работает неверно (но тесты не запускаются из-за всех проблем выше).Стиль:
'\0'
лучше использовать просто0
.my_*
, у нас нет такого жёсткого ограничения по максимальной длине.my_strscmp
можно сильно упростить.Так что пока, увы, 0.