Change History (9)

comment:1 Changed 4 years ago by Egor Suvorov

Owner: changed from Артур Гулецкий (huletski) to egipti.pavel
Type: ожидается проверкаожидаются исправления

comment:2 Changed 4 years ago by egipti.pavel

Owner: changed from egipti.pavel to Артур Гулецкий (huletski)
Type: ожидаются исправленияожидается проверка

comment:3 Changed 4 years ago by egipti.pavel

Owner: changed from Артур Гулецкий (huletski) to egipti.pavel

comment:4 Changed 4 years ago by egipti.pavel

Owner: changed from egipti.pavel to Артур Гулецкий (huletski)

comment:5 Changed 4 years ago by Артур Гулецкий (huletski)

Идейные замечания:

  • зачем ловить исключение в методе, который его бросил (e.g. Matrix::addMatrix): если метод умеет обрабатывать ошибку, что в ней “исключительного”? Обрабатывайте исключения в main.cpp;
  • методы loadMatrix, mulMatrix стали бы проще для восприятия, если бы для хранения промежуточного результата использовался RAII объект (Matrix), а в конце метода делать noexcept swap или аналог noexcept op=(Matrix&&).

Замечания:

  • наледуйте MatrixException? от std::exception/std::logic_error
  • matrix.h:18. почему этот метод публичный?
  • методы matrix лучше заменить на операторы (op+=, op*=);
  • main.cpp. имена переменных: str -> command, str2 -> arg1, file -> file_name, str3 -> arg2;
  • базовые гарантии поломаны для некоторых методов. Например, если в matrix.cpp:37 вылетит bad_alloc, кто освободит память из выделенную в 35 строке, кто закроет файл?
  • matrix.cpp:68. Тернарный оператор - хорошо, но в таком виде делает код нечитабельным. Можно переписать так:

printf(j == _cols - 1 ? "%d" : "%d ", _matrix[i][j]); или так
printf(“%d%c”, _matrix[i][j], " \n"[j != _cols -1]);;
Если используйте тернарный оператор, старайтесь, чтобы 1) кода в его ветках было настолько мало, насколько возможно 2) различия в ветках были очевидны;

  • matrix.cpp:35-38, 110-113. Дублирование намекает на необходимость Matrix::Matrix(row_nm, col_nm);
  • если попробовать загрузить файл состоящий из одного числа, выводится сообщение об ошибке аллокации памяти, а не о неверном формате файла.

Баллы: 3.25, нужно доделывать.

comment:6 Changed 4 years ago by Артур Гулецкий (huletski)

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

comment:7 Changed 4 years ago by egipti.pavel

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

comment:8 Changed 4 years ago by Артур Гулецкий (huletski)

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

В решении используете stdio - ok, в следующих решениях используйте потоки C++, если в задании не сказано обратное.

matrix.h

  • в loadMatrix передавайте FILE*, это сделает интерфейс более общим;
  • неясно как получить значение элемента матрицы, используя текущие публичные методы. Возвращайте значение при помощи метода elemMatrix, печатайте его в коде интерпретатора (main.cpp);

matrix.cpp

  • минус базовые гарантии: исключение в 15 -> кто освободит память выделенную в 13?
  • 22: дублируется код выделения памяти для матрицы определенного размера. Неясно зачем вообще этот метод: в loadMatrix считайте из файла размеры, сделайте временный объект, запишите в него матрицу из файла, сделайте своп. Пока не сделали swap в случае выхода из метода, временный объект удалится сам (спасибо RAII-friendly реализации матрицы). Op*= вы примерно так же реализовали: create tmp, update tmp, swap tmp;
  • 125: имя product точнее;
  • 139: copy-swap спасет от дублирования и отсутствия базовых гарантий (если copy ctor их предоставит);

Баллы: 5, доделывайте.

comment:9 Changed 4 years ago by Артур Гулецкий (huletski)

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

Дедлайн.

Note: See TracTickets for help on using tickets.