Opened 3 years ago

Closed 3 years ago

#20 closed ожидаются исправления (задача сдана)

HW 1 <1>

Reported by: Elisey Evseev Owned by: Ilya Makarov
Component: HW #1 (BMP) Version: 1.0
Keywords: Cc:

Description

Извините за позднюю отправку !!!

Change History (2)

comment:1 Changed 3 years ago by Ilya Makarov

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

Ваш проект не собирается.

  • Вы добавили сгенерированный makefile. Вместо него необходимо добавить ваш CMakeLists.txt.
  • Есть предупреждения их необходимо поправить. Флаги компиляции: -Wall -Wextra -pedantic -Werror. Вывод:
    [main] Building folder: hal matrices
    [build] Starting build
    [proc] Executing command: /usr/local/bin/cmake --build /Users/i.o.makarov/develop/local/cpp21/evseev.elisey/hal/build --config Debug --target matrices -j 18 --
    [build] [2/3  33% :: 0.644] Building CXX object CMakeFiles/matrices.dir/main.o
    [build] [2/3  66% :: 0.738] Building CXX object CMakeFiles/matrices.dir/matrices.o
    [build] ../matrices.cpp:14:23: warning: comparison of integers of different signs: 'int' and 'std::__1::vector<std::__1::vector<double, std::__1::allocator<double> >, std::__1::allocator<std::__1::vector<double, std::__1::allocator<double> > > >::size_type' (aka 'unsigned long') [-Wsign-compare]
    [build]     for (int i = 0; i < matrix_fst.size(); ++i)
    [build]                     ~ ^ ~~~~~~~~~~~~~~~~~
    [build] ../matrices.cpp:16:27: warning: comparison of integers of different signs: 'int' and 'std::__1::vector<double, std::__1::allocator<double> >::size_type' (aka 'unsigned long') [-Wsign-compare]
    [build]         for (int j = 0; j < matrix_fst[0].size(); ++j) {
    [build]                         ~ ^ ~~~~~~~~~~~~~~~~~~~~
    [build] ../matrices.cpp:36:20: warning: comparison of integers of different signs: 'int' and 'std::__1::vector<std::__1::vector<double, std::__1::allocator<double> >, std::__1::allocator<std::__1::vector<double, std::__1::allocator<double> > > >::size_type' (aka 'unsigned long') [-Wsign-compare]
    [build]     for (int i=0; i<matrix_snd_new.size(); ++i)
    [build]                   ~^~~~~~~~~~~~~~~~~~~~~~
    [build] ../matrices.cpp:38:27: warning: comparison of integers of different signs: 'int' and 'std::__1::vector<double, std::__1::allocator<double> >::size_type' (aka 'unsigned long') [-Wsign-compare]
    [build]         for (int j = 0; j < matrix_snd_new[0].size(); ++j)
    [build]                         ~ ^ ~~~~~~~~~~~~~~~~~~~~~~~~
    [build] ../matrices.cpp:46:20: warning: comparison of integers of different signs: 'int' and 'unsigned long' [-Wsign-compare]
    [build]     for (int i=0; i<matrix_result_rows_number; ++i)
    [build]                   ~^~~~~~~~~~~~~~~~~~~~~~~~~~
    [build] ../matrices.cpp:48:24: warning: comparison of integers of different signs: 'int' and 'unsigned long' [-Wsign-compare]
    [build]         for (int j=0; j< matrix_result_columns_number; ++j)
    [build]                       ~^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    [build] ../matrices.cpp:109:23: warning: comparison of integers of different signs: 'int' and 'unsigned long' [-Wsign-compare]
    [build]     for (int i = 0; i < rows_num; ++i)
    [build]                     ~ ^ ~~~~~~~~
    [build] ../matrices.cpp:111:27: warning: comparison of integers of different signs: 'int' and 'unsigned long' [-Wsign-compare]
    [build]         for (int j = 0; j < cols_num; ++j)
    [build]                         ~ ^ ~~~~~~~~
    [build] 8 warnings generated.
    [build] [3/3 100% :: 0.796] Linking CXX executable matrices
    [build] Build finished with exit code 0
    

Smoke тесты не проходят:

  • Вывод:
    ➜  build cp -R ../../../matrices_smoke_test/* .
    ➜  build ./smoke_test.sh ./matrices
    ***** Running: ./matrices 5.txt
    ./smoke_test.sh: line 17: 37323 Segmentation fault: 11  $REAL_EXEC "$@" > out.txt 2> err.txt
    File is not opened
    Error: expected zero exit code
    stdout:
    stderr:
    File is not opened
    

Замечания:

  • Используйте тип size_t для индексов. Не смешивайте типы unsigned и size_t
  • Не хардкодьте пути до тестов в коде. Конкретно тут:
    std::string file_path = "/home/elisey/ITMO/matr/";
    
  • В коде есть неициализированные переменные. Пример:
        unsigned long rows_num;
        unsigned long cols_num;
    
  • Вместо переносов строк \n используйте std::endl для завершения вывода.
  • Не инкрементируйте переменные в цикле for дважды (см. цикл по аргументам в функции main), вместо этого лучше идти с шагом 2.
  • Постарайтесь делать локальные переменные константами (если не требуется их дальнейшая модификация)
  • Проверка при сложении не учитывает количество столбцов в матрицах.

comment:2 Changed 3 years ago by Ilya Makarov

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

Задача сдана.

Из новых замечаний:

  • Вы вынесли проверку на корректное открытие файла в отдельную функцию, таким образом вы несколько раз открываете файл (первый раз для проверки, второй для чтения). Более того, следующие открытие для чтение (создание файлового потока std::ifstream) не дает гарантий на то, что файл был успешно открыт. Получается, что вы ничего не проверили :)
  • В репозитории остался лишний makefile
  • В заголовочном файле matrices.h лишние включения. Проверьте остальные файлы проекта тоже.
  • Не пишите лишних комментариев. Например комментарий к функции сложения матриц излишен (из кода и так понятно, что делает эта функция). Комментарии нужны в тех местах, где поведение не очевидно из кода.
Note: See TracTickets for help on using tickets.