Change History (5)

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

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

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

  • ошибки, связанные с определением корректности ввода (e.g. при вводе одного числа ход не считается неверным, при вводе буквы программа зависает);
  • в случае ничьей печатается сообщение "move: Draw.";
  • используются потоки, а не stdio.

Стиль

Board.hpp

*: const у методов не проставлен
3: стиль имен enumов, enum classов обычно совпадает со стилем имен классов;
7: отступы;
23: а без UB никак? assert, например. Падать обычно лучше, чем данные портить;
32: s/10/sz_field;
34: так точно, private должен быть;

Board.cpp

14: избыточный if, возвращайте непосредственно результат вычисления условия;
47: переменные с заглавной буквы зачем-то;
48: дублирование циклов, нужно убрать;
49: можно уменьшить вложенность:

while (...) {
  if (...) { break; }
  ...
}

StdioBoardView?.hpp

*: const у методов;
*: поля должны быть приватными, решение хранить копию Board неоднозначно;

StdioBoardView?.cpp

12: switch позволил бы сделать код очевиднее;
29: a вот и баг с выводом Draw;
39: дублируется вызов функции, выводящей доску; попробуйте переделать тело цикла, чтобы от этого избавиться; уровень вложенности в теле цикла нужно попробовать уменьшить.

Test.hpp

3: cstdio

BoardTest?.hpp

*: имена тестов неинфорамaтивны,:чем testMove1 от testMove2 отличается, если судить по названию? Лучше, чтобы имя как-то отражало тестируемый случай.

Test.cpp

19: избыточный if.

BoardTest?.cpp

70: более удобно было бы задавать конфигурацию доски через массив символов (нужно дописать метод в Board).

Misc

*: test/test1.cpp -> test/test.cpp


Баллы

Корректность: 14
Стиль: 5.5

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

Version: 1.0

comment:3 Changed 4 years ago by Никита Усольцев

Version: 1.03.0

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

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

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

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

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

Ценю ваши усилия по созданию Makefile, но собрать командой make решение все еще нельзя:

{hw_02}[2125]$ pwd && svn up && svn status
/home/hfx/dvl/cpp19/usoltsev.nikita/hw_02
Updating '.':
At revision 3081.
{hw_02}[2126]$ make
make: /usr/local/Cellar/cmake/3.15.5/bin/cmake: Command not found
Makefile:343: recipe for target 'cmake_check_build_system' failed
make: *** [cmake_check_build_system] Error 127

Если собирать "руками", то решение не компилируется:

{build}[2131]$ cmake ..
-- The C compiler identification is GNU 9.2.1
-- The CXX compiler identification is GNU 9.2.1
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/g++
-- Check for working CXX compiler: /usr/bin/g++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Configuring done
-- Generating done
-- Build files have been written to: /home/hfx/dvl/cpp19/usoltsev.nikita/hw_02/build
[1]+  Done                    emacs ../CMakeLists.txt
{build}[2132]$ make
Scanning dependencies of target test_hw_02
[ 11%] Building CXX object CMakeFiles/test_hw_02.dir/test/test1.cpp.o
[ 22%] Building CXX object CMakeFiles/test_hw_02.dir/test/Test.cpp.o
[ 33%] Building CXX object CMakeFiles/test_hw_02.dir/test/BoardTest.cpp.o
[ 44%] Building CXX object CMakeFiles/test_hw_02.dir/src/Board.cpp.o
[ 55%] Linking CXX executable test_hw_02
[ 55%] Built target test_hw_02
Scanning dependencies of target hw_02
[ 66%] Building CXX object CMakeFiles/hw_02.dir/src/main.cpp.o
/home/hfx/dvl/cpp19/usoltsev.nikita/hw_02/src/main.cpp: In function ‘int main(int, char**)’:
/home/hfx/dvl/cpp19/usoltsev.nikita/hw_02/src/main.cpp:7:16: error: ‘strcmp’ was not declared in this scope
    7 |     } else if (strcmp(argv[1], "silent") == 0) {
      |                ^~~~~~
/home/hfx/dvl/cpp19/usoltsev.nikita/hw_02/src/main.cpp:2:1: note: ‘strcmp’ is defined in header ‘<cstring>’; did you forget to ‘#include <cstring>’?
    1 | #include "StdioBoardView.hpp"
  +++ |+#include <cstring>
    2 | 
CMakeFiles/hw_02.dir/build.make:62: recipe for target 'CMakeFiles/hw_02.dir/src/main.cpp.o' failed
make[2]: *** [CMakeFiles/hw_02.dir/src/main.cpp.o] Error 1
CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/hw_02.dir/all' failed
make[1]: *** [CMakeFiles/hw_02.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2

Если починить и это:

  • используются потоки, а не stdio;
  • приложение не завершается на ничьей с печатью "Draw.", a печатает "DRAW" и ожидает нового хода.

Стиль

Board.hpp

  • публичные поля (_state);
  • публичные методы, которые должны быть приватными (e.g. counting);
  • getGameState (для большего контраста с getFieldState);

+ неисправленные замечания из прошлого комментария.


Баллы

Корректность: 15.5 (учитывая замечания и ошибки компиляции);
Стиль: 6.5.

Last edited 4 years ago by Артур Гулецкий (huletski) (previous) (diff)
Note: See TracTickets for help on using tickets.