Opened 4 years ago
Closed 4 years ago
#667 closed ожидается проверка (задача сдана)
WW #11
Reported by: | yakovlev.aleksandr | Owned by: | Артур Гулецкий (huletski) |
---|---|---|---|
Component: | WW cpp_io | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (3)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
Вроде поправил что успел...
comment:3 Changed 4 years ago by
Resolution: | → задача сдана |
---|---|
Status: | assigned → closed |
Решение собирается с warnings -> -0.5:
{lab_11}[2110]$ pwd && svn up && svn status /home/hfx/dvl/cpp19/yakovlev.aleksandr/lab_11 Updating '.': At revision 2773. M CMakeLists.txt {lab_11}[2111]$ svn diff Index: CMakeLists.txt =================================================================== --- CMakeLists.txt (revision 2773) +++ CMakeLists.txt (working copy) @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 3.10.2) +cmake_minimum_required(VERSION 3.5) project(lab) @@ -17,4 +17,4 @@ include/employees.h include/bin_manip.h) -add_executable(lab_11 ${SOURCE} ${HEADER}) \ No newline at end of file +add_executable(lab_11 ${SOURCE} ${HEADER}) {lab_11}[2112]$ mkdir build && cd build {build}[2113]$ 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/lab_11/build {build}[2114]$ make Scanning dependencies of target lab_11 [ 25%] Building CXX object CMakeFiles/lab_11.dir/src/main.cpp.o [ 50%] Building CXX object CMakeFiles/lab_11.dir/src/employees.cpp.o /home/hfx/dvl/cpp19/yakovlev.aleksandr/lab_11/src/employees.cpp: In function ‘std::istream& operator>>(std::istream&, EmployeesArray&)’: /home/hfx/dvl/cpp19/yakovlev.aleksandr/lab_11/src/employees.cpp:184:1: warning: no return statement in function returning non-void [-Wreturn-type] 184 | } | ^ /home/hfx/dvl/cpp19/yakovlev.aleksandr/lab_11/src/employees.cpp: In static member function ‘static Employee* Employee::ByType(int)’: /home/hfx/dvl/cpp19/yakovlev.aleksandr/lab_11/src/employees.cpp:41:1: warning: control reaches end of non-void function [-Wreturn-type] 41 | } | ^ [ 75%] Building CXX object CMakeFiles/lab_11.dir/src/bin_manip.cpp.o [100%] Linking CXX executable lab_11 [100%] Built target lab_11
Если их починить, данные все так же выводятся в неверном формате (бонус, должность Sales Manager, label для базовой заработной платы) -> -1.5.
Если починить и это, тесты проходят успешно.
Замечания по коду:
- bin_manip.cpp. используйте списки инициализации;
- bin_manip.cpp:35, 58. чтение/запись int32_t в little-endian реализована неверно. Байты записываете в порядке, в котором они лежат в памяти, а он зависит от платформы. Нужно было брать _значение_ (для которого порядок гарантирован), читать из него соотвествующий байт (сдвиг + & 0xFF) и записывать результат -> -1;
- bin_manip.cpp: отсутствует обработка ошибок (установка failbit) в коде считывания данных (bool - если считалось значение отличное от 0 и 1, c-string - не был найден нуль-терминатор, в этом случае решение вообще зависнет) -> -1;
- employees.cpp:80. отступы. Например:
ifs >> foo >> bar >> baz;
- employees.cpp:147. странно, что метод Add удаляет аргумент, так как неясно, нужен ли еще объект коду, который вызвал Add.
+ часть замечаний из предыдущего комментария.
За мелкие замечания совокупно -0.5.
Баллы: 5.5.
Note: See
TracTickets for help on using
tickets.
Общие замечания
bin_manip.h
employees.h
bin_manip.cpp
employees.cpp
Баллы: 4.5, доделывайте.