Opened 3 years ago

Closed 3 years ago

#437 closed ожидается проверка (задача сдана)

WW figures Andrei Kozyrev lab_09

Reported by: Andrei Kozyrev Owned by: Антон Филатов
Component: WW figures Version: 3.0
Keywords: Cc:

Description


Change History (5)

comment:1 Changed 3 years ago by Антон Филатов

Type: ожидается проверкаожидаются исправления
$make
mkdir -p obj
g++ -O2 -Wall -Werror -std=c++11 -Iinclude -c -MMD -o obj/Scheme.o src/Scheme.cpp
src/Scheme.cpp: In destructor ‘Scheme::~Scheme()’:
src/Scheme.cpp:9:31: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     for (std::size_t i = 0; i < size; ++i)
                             ~~^~~~~~
src/Scheme.cpp: In member function ‘void Scheme::move(int, int, int)’:
src/Scheme.cpp:18:31: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     for (std::size_t i = 0; i < size; ++i)
                             ~~^~~~~~
src/Scheme.cpp: In member function ‘void Scheme::remove_figure(int)’:
src/Scheme.cpp:29:30: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     for(std::size_t i = 0; i < size; ++i)
                            ~~^~~~~~
src/Scheme.cpp: In member function ‘void Scheme::zoom_figure(int, int)’:
src/Scheme.cpp:39:30: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     for(std::size_t i = 0; i < size; ++i)
                            ~~^~~~~~
src/Scheme.cpp: In member function ‘Figure* Scheme::is_inside_figure(int, int)’:
src/Scheme.cpp:45:30: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     for(std::size_t i = 0; i < size; ++i) {
                            ~~^~~~~~
src/Scheme.cpp: In member function ‘void Scheme::print_all_figures()’:
src/Scheme.cpp:55:30: error: comparison between signed and unsigned integer expressions [-Werror=sign-compare]
     for(std::size_t i = 0; i < size; ++i)
                            ~~^~~~~~
cc1plus: all warnings being treated as errors
Makefile:17: recipe for target 'obj/Scheme.o' failed
make: *** [obj/Scheme.o] Error 1

Руками закостылил makefile, чтобы тесты попробовать

Падает тест на создание кругов:

Circle::Circle(int id, int x, int y, int radius, const char* label) :
    Figure(id, x, y), radius(radius), label(label) {}

Вот такой конструктор копирует не содержимое строки, а только указатель. Таким образом, если подать строку одному кругу, потом поменять её и подать другому кругу - будет два круга с одинаковыми label-ами

И также падает тест на is_inside у круга - выдаёт неправильный ответ. Хотя с вашей реализацией и тесты на rectangle могу падать. Ну кто ж из int корень извлекает или на 2 делит

Стиль:

  • кажется, в схему просится метод поиска по id, чтобы не копипастить

7/10

comment:2 Changed 3 years ago by Andrei Kozyrev

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

comment:3 Changed 3 years ago by Антон Филатов

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

Падает тест на is_inside в круге на граничных значениях

Стиль:

  • а если бы вы find_by_id сделали, возвращающей int - номер в массиве, ею можно было бы и в remove пользоваться
  • is_inside в прямоугольнике сейчас выглядит страшно. Может, std::abs вам поможет?

8/10

comment:4 Changed 3 years ago by Andrei Kozyrev

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

comment:5 Changed 3 years ago by Антон Филатов

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

Теперь хорошо, что вы find_by_id сделали, возвращающей int, но вы нигде не проверяете, что оно не вернуло -1. Хотя бы на уровне ассерта.

В остальном всё огонь
9,5/10

Note: See TracTickets for help on using tickets.