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:1 Changed 4 years ago by Артур Гулецкий (huletski)

#752: "Теперь, кажется, всё работает. Тестов всё ещё нет в мейкфайле."

Last edited 4 years ago by Артур Гулецкий (huletski) (previous) (diff)

comment:2 Changed 4 years ago by Артур Гулецкий (huletski)

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 berbat.georgiy

Version: 1.02.0

Починил, должно работать. Не до конца понятно, как исправлять:

размер поля не в константе;

Board::get_state содержит дублирующийся код и сложен для понимания; (сделал с этим всё, что смог, но код всё еще дублируется местами)

comment:4 Changed 4 years ago by berbat.georgiy

Type: ожидаются исправленияожидается проверка

comment:5 Changed 4 years ago by Артур Гулецкий (huletski)

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 Артур Гулецкий (huletski)

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

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

Стала чуть лучше: iostream -> stdio.

Оставшиеся замечания:

  • обработка ничьей;
  • valgrind;
  • silent mode;
  • формат вывода;
  • обнаружение некорректных ходов.

Стиль

Часть общих замечаний по стилю исправили.


Баллы:

Kорректность: 8.5
Стиль: 5, учитывая не исправленные замечания и неполное решение (см. корректность).

Note: See TracTickets for help on using tickets.