Opened 4 years ago

Closed 4 years ago

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

Д/З №1. Матрицы

Reported by: malyutin.danila Owned by: rutsky,grabovoy.philipp
Priority: проверка Milestone: ha1-milestone2
Component: HA#1 matrices Version:
Keywords: Cc: d.maljutin@…

Description

Прошу проверить.

Change History (6)

comment:1 Changed 4 years ago by malyutin.danila

Cc: d.maljutin@… added
Milestone: ha1-milestone1

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

Приветствую! Несколько замечаний:

  1. Нужно явно задать имя бинаря -- matrices
  2. Хедер с std::invalid_exception не попал в main.cpp
  3. char* к std::string можно не приводить (при вызове get_matrix_from_file), при выборе функции это будет сделано автоматически (подробнее будет дальше на одной из лекций).

Косметические вещи:

  1. В методах Matrix::init_rows и Matrix::init_rows_with_zeroes есть дублирование кода (и блоки кода, их использующие, получаются одинаковыми): можно одно выразить через другое. И они не очень матчатся по названию: кажется, что один отличается от другого константой, а на самом деле он еще какие-то поля меняет. Лучше использовать один метод, который наиболее цело меняет стейт матрицы.
  2. operator() ассоциируется скорее с долгими вычислениями, чем с обращением по индексу. Для контейнеров из STL привычен метод at.
  3. И использование одного массива, конечно, очень полезно :)
Last edited 4 years ago by Филипп (previous) (diff)

comment:3 in reply to:  2 Changed 4 years ago by malyutin.danila

Replying to grabovoy:

Приветствую! Несколько замечаний:

  1. Нужно явно задать имя бинаря -- matrices
  2. Хедер с std::invalid_exception не попал в main.cpp
  3. char* к std::string можно не приводить (при вызове get_matrix_from_file), при выборе функции это будет сделано автоматически (подробнее будет дальше на одной из лекций).

Косметические вещи:

  1. В методах Matrix::init_rows и Matrix::init_rows_with_zeroes есть дублирование кода (и блоки кода, их использующие, получаются одинаковыми): можно одно выразить через другое. И они не очень матчатся по названию: кажется, что один отличается от другого константой, а на самом деле он еще какие-то поля меняет. Лучше использовать один метод, который наиболее цело меняет стейт матрицы.
  2. operator() ассоциируется скорее с долгими вычислениями, чем с обращением по индексу. Для контейнеров из STL привычен метод at.
  3. И использование одного массива, конечно, очень полезно :)

По косметическим вещам:
1) Да, просто не хотелось убирать initializer list из конструктора и в других местах не нужно было как-то память инициализировать, но да, лучше одной функцией, исправлю.
2) Зато так больше на какие-нибудь матрицы в фортране или матлабе похоже =). Но могу и на at исправить, если это критично. Или оставить как есть?
3) Я где-то в середине задачи про это подумал, но условие задачи говорит про двумерные массивы (в дополнительных требованиях) "достаточно уметь пользоваться двухмерными массивами (...)", поэтому решил оставить как есть. Я ведь правильно понял, что косметические вещи не обязательно все исправлять? Или всё же надо переписать на одномерный массив?

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

Да, косметические вещи необязательно исправлять.

comment:5 Changed 4 years ago by malyutin.danila

Milestone: ha1-milestone1ha1-milestone2

Спасибо! Исправил.

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

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