Opened 4 years ago

Closed 4 years ago

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

Home Assignment #1

Reported by: Иван Owned by: rutsky,grabovoy.philipp
Priority: проверка Milestone: ha1-deadline
Component: HA#1 matrices Version: 1.0
Keywords: Cc:

Description


Change History (9)

comment:1 Changed 4 years ago by Филипп

Привет! Пара вещей на исправления:

  1. std::invalid_exception живет в отдельном хедере, нужно его подключать
  2. Замечания 4, 6, 9, 24 из частых ошибок
  3. В file.open в некоторых ситуациях передаются некорректный аргумент

И в общем по решению:

  1. Из операторов лучше возвращать не указатели, а объекты (или ссылки, если это возможно -- если создан не временный объект). И внутри операторов в данном случае предпочтительно использовать не поинтеры: разыменование указателя занимает процессорное время.
  2. Логику чтения из/вывода в файлы лучше отделить от класса матриц. Для этих целей можно написать get(), возвращающий double&.

comment:2 Changed 4 years ago by Филипп

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

comment:3 Changed 4 years ago by Иван

Добрый день! У меня нет идей исправления пункта 3. Почитал решения аналогичной проблемы на форумах, но они либо платформозависимые, либо используют конструктор (если я правильно понял) std::ifstream(file) != 0, что на мой взгляд является тем же самым действием, что я использую при создании file. Поэтому я проверяю существование файла через is_open(). Я могу рассчитывать на подсказку? =)

comment:4 Changed 4 years ago by Филипп

Valgrind находит обращение к невыделенной памяти в кейсах smoke-теста, где число аргументов четно: код все-равно пытается открыть файл по имени последнего отсутствующего аргумента. Так не надо делать :)

И еще про важные замечания: в Matrix.hpp включен <exception> и не включен напрямую заголовочный файл с (std::)size_t. И можно смело добавить константности некоторым методам.

comment:5 Changed 4 years ago by Иван

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

comment:6 Changed 4 years ago by Иван

Milestone: ha1-milestone1ha1-milestone2

comment:7 Changed 4 years ago by Филипп

Milestone: ha1-milestone2ha1-deadline
Type: ожидается проверкаожидаются исправления

В matrices.hpp остались включенными заголовочные файлы про стримы.

И косметические вещи/улучшения производительности (факультативно):

  1. В answer.get(i,j) = array_[i][k] * factor.get(k, j) + answer.get(i, j) можно заиспользовать +=. А лучше каждую сумму складывать в локальную переменную, чтобы обращений по указателям было меньше.
  2. Лучше делать array_ = std::nullptr, чем array_ = new double*[0] -- первое легче отловить и память на хранение размера массива не выделяется.
Last edited 4 years ago by Филипп (previous) (diff)

comment:8 Changed 4 years ago by Иван

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

Исправил Ваши замечания. Перенес iostream и fstream в matrices.cpp.

comment:9 Changed 4 years ago by Филипп

Resolution: задача сдана
Status: newclosed
Note: See TracTickets for help on using tickets.