Opened 4 years ago
Closed 4 years ago
#803 closed ожидаются исправления (задача сдана)
WW #14
Reported by: | Никита Усольцев | Owned by: | Артур Гулецкий (huletski) |
---|---|---|---|
Component: | WW_exceptions | Version: | 2.0 |
Keywords: | Cc: |
Description
Change History (5)
comment:1 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
comment:2 Changed 4 years ago by
Version: | → 1.0 |
---|
comment:3 Changed 4 years ago by
Type: | ожидаются исправления → ожидается проверка |
---|---|
Version: | 1.0 → 2.0 |
comment:4 Changed 4 years ago by
Type: | ожидается проверка → ожидаются исправления |
---|
Замечания:
- базовые гарантии сломаны в коде загрузки файла (см. ниже);
- ошибки в реализации умножения, обратите внимание на размер матрицы-результата умножения;
- в папке с решением лишняя папка .idea;
- элементы матрицы все еще хранятся в контейнере (std::vector).
matrix.hpp
- перегруженные op>>, op<< сделайте функциями как принято (первым аргументом должен быть поток, а не (неявнo) this);
- неясно зачем Matrix::print нужен, если op<< перегружен;
main.cpp
- (fyi) 13. имена переменных: s/temp/reg_prefix, если после чтения написать
assert(reg_prefix == '$')
/обработать ситуацию с неверным форматом, станет еще лучше;
matrix.cpp
- 7. строка длиной 100+ символов, код воспринимать сложнее. Лучше, например, так переформатировать:
Matrix::Matrix(...) : row_(row), col_(col) , matrix(...) {}
- расстановка фигурных скобок для тела if, состоящего из одного statement'a: где-то ставите (55), где-то нет (36). Выберите один стиль и придерживайтесь его (субъективно лучше ставить);
- 38: а вот и баг с размерами;
- Matrix::op>>. Базовые гарантии нарушены: если в файле одно или два числа (размеры матрицы без элементов), то метод изменит размеры полей матрицы без изменения содержимого -> нарушится инвариант класса (row, col описывают количество строк и столбцов матрицы) -> проверка в elem может работать неверно. Fix: обновляйте состояние объекта после того, как прочли матрицу полностью.
- 71: неясно зачем в буфер читать, а не сразу в элемент матрицы:
is >> buffer.matrix[i][j]
.
Баллы: все еще 5 (с т.з. корректности, похоже, стало даже хуже, т.ч. баллы остаются за предыдущую версию). Можете доделывать.
FYI: для решений на базе векторов максимум в 4 группе 7.5 баллов, а не 10.
Note: See
TracTickets for help on using
tickets.
Эх, снова
make
не работает (+ лишняя папка.idea
в решении):Замечания:
global
main.cpp
matrix.hpp
-> храните сообщение в RAII объекте внутри класса (std::string) либо храните копию сообщения и удаляйте в деструкторе;
matrix.cpp
*this = buf;
?Баллы: 5.