#746 closed ожидается проверка (задача сдана)
HW #2
Reported by: | yakovlev.aleksandr | Owned by: | Артур Гулецкий (huletski) |
---|---|---|---|
Component: | HW #2 (X0) | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (4)
comment:1 Changed 4 years ago by
comment:2 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Наверное работает, если собирается:
{hw_02}[2296]$ pwd && svn up && svn status /home/hfx/dvl/cpp19/yakovlev.aleksandr/hw_02 Updating '.': At revision 2940. M CMakeLists.txt {hw_02}[2297]$ svn diff Index: CMakeLists.txt =================================================================== --- CMakeLists.txt (revision 2940) +++ CMakeLists.txt (working copy) @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2) +cmake_minimum_required(VERSION 2.9) project(lab) @@ -28,4 +28,4 @@ add_executable(hw_02 ${SOURCE} ${HEADER}) add_executable(test_hw_02 ${SOURCE2} ${HEADER2}) -#add_executable(sand ${SOURCE3} ${HEADER3}) \ No newline at end of file +#add_executable(sand ${SOURCE3} ${HEADER3}) {hw_02}[2298]$ mkdir build && cd build && 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/yakovlev.aleksandr/hw_02/build {build}[2299]$ make Scanning dependencies of target hw_02 [ 12%] Building CXX object CMakeFiles/hw_02.dir/src/main.cpp.o [ 25%] Building CXX object CMakeFiles/hw_02.dir/src/Board.cpp.o [ 37%] Building CXX object CMakeFiles/hw_02.dir/src/StdioBoardView.cpp.o [ 50%] Linking CXX executable hw_02 [ 50%] Built target hw_02 Scanning dependencies of target test_hw_02 [ 62%] Building CXX object CMakeFiles/test_hw_02.dir/test/test.cpp.o [ 75%] Building CXX object CMakeFiles/test_hw_02.dir/test/BoardTest.cpp.o /home/hfx/dvl/cpp19/yakovlev.aleksandr/hw_02/test/BoardTest.cpp: In static member function ‘static bool Test::showFinalResults()’: /home/hfx/dvl/cpp19/yakovlev.aleksandr/hw_02/test/BoardTest.cpp:17:1: error: no return statement in function returning non-void [-Werror=return-type] 17 | } | ^ cc1plus: all warnings being treated as errors CMakeFiles/test_hw_02.dir/build.make:86: recipe for target 'CMakeFiles/test_hw_02.dir/test/BoardTest.cpp.o' failed make[2]: *** [CMakeFiles/test_hw_02.dir/test/BoardTest.cpp.o] Error 1 CMakeFiles/Makefile2:104: recipe for target 'CMakeFiles/test_hw_02.dir/all' failed make[1]: *** [CMakeFiles/test_hw_02.dir/all] Error 2 Makefile:83: recipe for target 'all' failed make: *** [all] Error 2
В CMakeLists указывайте минимальную версию, которая будет собирать проект; добавьте Makefile, который создает build папку и собирает в ней проект.
Основные проблемы:
- определение состояния партии, например:
O.OX.OX... XX..OXXOOO .OXOXO..O. X.OO.XO..X X.OX.XXXO. OXX.X.XOOX .O.OXOX... OO..OX.X.. .O..OX.O.X X.O..XXOO. O wins!
- ввод данных должен производиться на той же строке, где напечатан prompt;
- обработка некорректных ходов не реализована (e.g. 0k9 приводит к зависанию программы).
Стиль (по диагонали, тк код, полагаю, будет дописываться)
Board.cpp:101. Используйте тернарный оператор;
StdioBoardView?.cpp: для io должны быть использованы функции stdio, а не потоки;
StdioBoardView?.cpp:20. напрашивается вспомогательная функция state_to_msg, чтобы избежать дублирования;
main.cpp:7. if избыточен, присваивайте условие переменной сразу;
- не хватает отдельных файлов Test.h и Test.cpp с реализацией класса Test; в BoardTest? маловато тестов, имена тестов мало говорят о проверяемых ситуациях.
Баллы
Корректность: 6;
Стиль: 3 (т.к. код еще будет дописываться)
comment:3 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:4 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Корректность
- неточности в формате вывода: "Bad move!", а не "Bad Move!";
- ход " 1 1 " должен считаться корректным.
Стиль
Board.h
3: константы, специфичные для класса, лучше делать static constexpr полями класса;
5: лишний include?
18: const у методов отсутствует;
24: refreshState точно нельзя сделать приватным?
Board.cpp
12: списки инициализации;
18: старайтесь называть переменные точнее (e.g. is_inside, point_is_inside);
22: дублирование циклов в методе;
130: метод с прописной буквы?
131: обычно присваивают результат применения тернарного оператора к аргументам:
cur_player = cur_player == Player::X ? Player::O : Player::X;
StdioBoardView?.h
11: std::strncpy(buffer, input.c_str(), input.size() + 1);
40: субъективно switch был бы точнее;
BoardTest?.h
6: и снова призрак iostream'a;
Баллы
Корректность: 19.25;
Стиль: 7.5
Промежуточная попытка, вроде работает, но это не точно...