Closed kuvshinovdr closed 10 months ago
а какое отличие есть в работе с Float matrix и Int matrix
Никакого, только тип. Там в cpp-файле можно написать функцию-шаблон, которая решает задачу для St_matrix
а предполагается ли то что матрица квадратная на входе?
Да.
что то есть на коленках написал
все поправил 20.12.23
поправил все что указано, но не понимаю почему редактор пишет что параметризовать не получается
А зачем автором ставите меня? Надо убрать функцию-шаблон из hpp-файла. Убрать второй параметр (он не нужен).
Итак,
auto floyd_warshall_only_matrix_ST( const ogxx::St_matrix<ST>& distances, ST)
->
auto floyd_warshall_only_matrix_ST( const ogxx::St_matrix<ST>& distances) -> St_matrix_uptr<ST>
Проверять размер надо через shape:
if(!distances.is_square())
->
if(!distances.shape().is_square())
Опечатка:
auto result = distance.copy();
->
auto result = distances.copy();
и
for (Scalar_index j = 0; j < n.cols ++j)
->
for (Scalar_index j = 0; j < n.cols; ++j)
Надо помочь компилятору (то ли MSVC тупит/глючит, то ли стандарт так велит), добавив явно типы результата:
auto floyd_warshall_only_matrix(Int_matrix const& distances) {
->
auto floyd_warshall_only_matrix(Int_matrix const& distances) -> Int_matrix_uptr {
и аналогично вторую функцию.
Наконец, обнаружилось, что я забыл указать const у метода St_matrix::copy. Так что придётся обновить ветку по main (внесены значимые поправки).
поправил
еще хотел спросить сколько примерно баллов вы мне поставите чтоб хоть чуть чуть представлять будет автомат или нет
100, уже поставил в таблицу.
Код добавлен в main.
Создать файлы include/ogxx/floyd_warshall.hpp и source/floyd_warshall.cpp. Объявить в первом из них и определить во втором из них функции
Данные функции должны считать матрицы расстояний между вершинами по матрицам длин рёбер, используя алгоритм Флойда-Уоршелла без предшественников (упрощённый вариант -- только матрицы расстояний, напоминает умножение матриц).