Skip to content

Lab3#1564

Closed
YeeeeRE wants to merge 53 commits into
Dovgalyuk:masterfrom
YeeeeRE:Lab3
Closed

Lab3#1564
YeeeeRE wants to merge 53 commits into
Dovgalyuk:masterfrom
YeeeeRE:Lab3

Conversation

@YeeeeRE

@YeeeeRE YeeeeRE commented Nov 27, 2025

Copy link
Copy Markdown

No description provided.

@Dovgalyuk

Copy link
Copy Markdown
Owner

А где третья лабораторная?

Comment thread Lab3CPP/CMakeLists.txt Outdated
target_link_libraries(Lab3CPP LibraryCPP)

add_test(NAME TestLab3 COMMAND Lab3CPP ${CMAKE_CURRENT_SOURCE_DIR}/input.txt)
set_property(TEST TestLab3 PROPERTY PASS_REGULAR_EXPRESSION "4")

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно добавить ещё сам маршрут.

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не исправлено.

Comment thread Lab3CPP/main.cpp Outdated

using namespace std;

typedef pair<int, int> Pos; // q, r

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А это зачем?

Comment thread Lab3CPP/main.cpp Outdated
return maze;
}

bool is_valid(const vector<string>& maze, int q, int r, vector<vector<bool>>& visited) {

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Для повторяющихся типов стоит сделать typedef.

Comment thread Lab3CPP/main.cpp Outdated
int rows = maze.size();
if (rows == 0) return -1;
int cols = maze[0].size();
vector<vector<bool>> visited(rows, vector<bool>(cols, false));

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Без этого массива можно обойтись.

Comment thread LibraryCPP/list.cpp Outdated
struct List {
ListItem *head;
ListItem *tail;
size_t size;

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

size тут не нужен.

Comment thread LibraryCPP/list.cpp
Comment thread Lab3CPP/CMakeLists.txt Outdated
target_link_libraries(Lab3CPP LibraryCPP)

add_test(NAME TestLab3 COMMAND Lab3CPP ${CMAKE_CURRENT_SOURCE_DIR}/input.txt)
set_property(TEST TestLab3 PROPERTY PASS_REGULAR_EXPRESSION "4")

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Не исправлено.

@Dovgalyuk

Copy link
Copy Markdown
Owner

Тесты не проходят.

Comment thread Lab3CPP/CMakeLists.txt Outdated

add_test(NAME TestLab3 COMMAND $<TARGET_FILE:Lab3CPP> ${CMAKE_CURRENT_SOURCE_DIR}/input.txt)
set_property(TEST TestLab3 PROPERTY PASS_REGULAR_EXPRESSION
"^6\nPath: \\([0-9]+,[0-9]+\\)( -> \\([0-9]+,[0-9]+\\))*\n$")

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно сравнивать выводимую картинку.

Comment thread CMakeLists.txt
elseif (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
add_compile_options(-fsanitize=address,undefined,leak)
add_link_options(-fsanitize=address,undefined,leak)
endif()

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Опции компиляции удалять нельзя.

Comment thread Lab3CPP/expected_testlab3.txt Outdated
\ / \ / \ / \ / \ / \ /
| x | . | . | # | . | . |
\ / \ / \ / \ / \ / \ /
| # | x | E | . | . | . |

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Тут шаг по диагонали, который не был предусмотрен правилами.

Kulebyak291 added 2 commits December 9, 2025 02:49
Comment thread Lab3CPP/main.cpp Outdated
void get_neighbors(int r, int dirs[6][2]) {
dirs[0][0] = 1; dirs[0][1] = 0;
dirs[1][0] = -1; dirs[1][1] = 0;
if (r % 2 == 0) {

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А это почему?

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

функция для определения координат 6 ячеек вокруг заданной ячейки, чтобы определить, куда перемещаться.
r - номер строки, dirs - массив-матрица. Можно сделать реализацию этой функции в других необходимых функциях, но зачем, если можно сделать её один раз и просто применять, когда потребуется

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно добавить больше тестов, чтобы убедиться, что это неверный код.

Comment thread Lab3CPP/main.cpp Outdated
}
current_position = predecessors[current_position.first][current_position.second];
}
reverse(path_positions.begin(), path_positions.end());

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Можно не переворачивать, а использовать в нужном порядке.

@Dovgalyuk

Copy link
Copy Markdown
Owner

Принято.

  • Разработать программный интерфейс модуля (заголовки функций) библиотеки LibraryCPPTemplate для работы с ориентированными графами. Граф должен инициализироваться количеством вершин.
  • Параметры шаблона графа --- это типы пометок для рёбер и для вершин.
  • В интерфейсе должна быть поддержка следующих операций: добавить вершину, добавить ребро (между заданными вершинами), удалить вершину, удалить ребро, проверить существует ли ребро между вершинами, задать/считать пометку для ребра, задать/считать пометку для вершины,
    получить пометки всех вершин в виде вектора.
  • Должна быть реализована структура-итератор для поддержки перебора всех соседей заданной вершины.
  • Реализовать в библиотеке Library модуль поддержки графов с разработанным интерфейсом. Связи должны храниться в виде матрицы смежности в контейнере Vector библиотеки LibraryCPPTemplate.
  • Разработать и добавить в проект LibraryCPPTemplate программу, тестирующую работу библиотеки для графа.
  • Добавить в решение проект, использующий графы. Программа должна считывать параметры графа и искать для него минимальное покрывающее дерево алгоритмом Прима.
  • Вершины должны обозначаться строковыми названиями.
  • Добавить пример входных данных и описать тест в CMakeLists.txt, который запускает разработанную программу и использует входные данные.

@Dovgalyuk Dovgalyuk closed this Dec 19, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants