Opened 4 years ago

Closed 4 years ago

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

WW #14

Reported by: Igor Engel Owned by: Sokolov Viacheslav
Component: WW_exceptions Version: 1.0
Keywords: Cc:

Description


Change History (6)

comment:1 Changed 4 years ago by Egor Suvorov

Owner: changed from Sokolov Viacheslav to Igor Engel
Type: ожидается проверкаожидаются исправления

comment:2 Changed 4 years ago by Igor Engel

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

comment:3 Changed 4 years ago by Igor Engel

Owner: changed from Igor Engel to Sokolov Viacheslav

comment:4 Changed 4 years ago by Sokolov Viacheslav

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

-lncurses наверное не нужен

по Стандарту int может быть 16-битным

17 int at(size_t y, size_t x) const;
18 int at(int y, int x) const;

зачем две перегрузки?

3 #include <iostream>

достаточно iosfwd в .h

3 MatrixException::MatrixException?(const std::string& what_arg) : std::runtime_error(what_arg) {}

эта перегрузка же не используется?

23 f.exceptions(std::ios_base::eofbit | std::ios_base::failbit | std::ios_base::badbit);
а зачем eof?

91 Matrix& Matrix::operator+=(const Matrix& other) {
92 *this = *this + other;
93 return *this;
94 }
95
96 Matrix& Matrix::operator*=(const Matrix& other) {
97 *this = *this * other;
98 return *this;
99 }

обычно наоборот реализуют + через +=, но в данном случае это неважно

хотя на самом деле важно из-за того, что оператор= реализован по умолчанию - кажется, он не дает нужного уровня гарантий для std::out_of_memory

comment:5 Changed 4 years ago by Igor Engel

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

Ой. Fixed.

Вроде, сейчас числа по модулю не превосохдят 100 по модулю. Правда, при загрузке... Не совсем понятны общие ограничения. Если их вообще нет, то надо вообще длинную арифметику...

Две перегрузки - по условиям могут быть отрицательные индексы, и при этом валидировать в main нельзя, так-что нужен метод со знаковым типом. С другой стороны, внутри Matrix хотелось-бы использовать беззнаковый.

Fixed.

Не используется, но мне кажется пусть будет, для консистентности с другими исключениями.

eof чтобы легко умереть если файл неполный (по условию бывает ведь).

Переделал вообще без присваиваниея

comment:6 Changed 4 years ago by Sokolov Viacheslav

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

Ок, согласен, в финальной версии всегда не больше 100 => любая битность устроит. Но в целом из-за "overflow = UB" и неопределенной разрядности int почти никогда нет смысла использовать.

Можно просто

66 } catch(std::ios_base::failure& ) {}

Note: See TracTickets for help on using tickets.