Opened 4 years ago
Closed 4 years ago
#751 closed ожидаются исправления (задача сдана)
HW#2
Reported by: | berbat.georgiy | Owned by: | Артур Гулецкий (huletski) |
---|---|---|---|
Component: | HW #2 (X0) | Version: | 2.0 |
Keywords: | Cc: |
Description
К сожалению, не знаю, насколько это всё работает, потому что мой компилятор отказывается работать с enum class, в ближайшее время это всё решу. И насчет мэйкфайла -- туда не включены тесты, потому что малопонятно, как правильно прописать зависимости, чтобы всё работало как надо.
Change History (6)
comment:2 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Корректность
Некоторые ошибки:
- формат не соблюдается, сравнивайте с примером из задания (когда доска должна выводиться, какие именно сообщения нужно выводить);
- на примере из условия valgrind находит ошибки;
- баги в коде обнаружения завершения игры, например:
O......... O...X..... O.X....... O......... O......... .......... ....X.X... .......... .......... .......... X move:
- баги при разборе некорректных ходов (сообщение печатается дважды):
{hw_02}[2447]$ ./hw_02 O move: a Bad Move! Bad Move!
- используется iostream, а не stdio.
Стиль
Тезисно, так как код надо сильно доделывать.
- отсутствует const у метовов;
- избыточные if как в Board.cpp:7 (которые можно либо убрать, либо заменить тернарным оператором для большей выразительности);
- размер поля не в константе;
- Board::get_state содержит дублирующийся код и сложен для понимания;
- SBView.cpp:42. parse_move;
- имена тестов testMove1 и testMove2 ничего не говорят о случаях, которые проверяются.
Баллы
Корректность: 5;
Стиль: 4 (тк код будет изменяться).
comment:3 Changed 4 years ago by
Version: | 1.0 → 2.0 |
---|
Починил, должно работать. Не до конца понятно, как исправлять:
размер поля не в константе;
Board::get_state содержит дублирующийся код и сложен для понимания; (сделал с этим всё, что смог, но код всё еще дублируется местами)
comment:4 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|
comment:5 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Починил, должно работать.
Все равно на примере из условия a) вывод не совпадает с ожидаемым (обратите внимание на все пробельные символы, вывод доски) b) valgrind находит ошибки.
Не до конца понятно, как исправлять:
размер поля не в константе;
class Board { static constexpr std::size_t Board_Sz = 10; BoardState b[Board_Sz][Board_Sz]; ... };
(сделал с этим всё, что смог, но код всё еще дублируется местами)
Board::get_state содержит дублирующийся код и сложен для понимания;
Подсказка:
Что нужно сделать для проверки состояния игры, если известно место последнего хода? Сходить по вертикали, горизонтали, диагонали по обоим направлениям и посчитать сколько клеток подряд совпадают. Если нашли (для верт., гориз., диаг. отдельно) больше пяти - победа.
Очевидная общая логика в шести случаях - сходить по направлению и посчитать совпадения от стартовой точки -- тот самый дублирующийся цикл из текущей версии.
Исправляйте корректность (формат, valgrind), время еще есть.
comment:6 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Корректность
Стала чуть лучше: iostream -> stdio.
Оставшиеся замечания:
- обработка ничьей;
- valgrind;
- silent mode;
- формат вывода;
- обнаружение некорректных ходов.
Стиль
Часть общих замечаний по стилю исправили.
Баллы:
Kорректность: 8.5
Стиль: 5, учитывая не исправленные замечания и неполное решение (см. корректность).
#752: "Теперь, кажется, всё работает. Тестов всё ещё нет в мейкфайле."