Skip to content

Романов Дмитрий Александрович гр.4092. Лабораторная работа №3#1609

Closed
mrromanuza-dev wants to merge 61 commits into
Dovgalyuk:masterfrom
mrromanuza-dev:master
Closed

Романов Дмитрий Александрович гр.4092. Лабораторная работа №3#1609
mrromanuza-dev wants to merge 61 commits into
Dovgalyuk:masterfrom
mrromanuza-dev:master

Conversation

@mrromanuza-dev

Copy link
Copy Markdown

No description provided.

Перенес определение структуры из .cpp в .h для удобства
1)Перенес определение структуры
2) Прописал функции для array
Скопировал input.txt добавив массив из случайных чисел для тестов кода
Т.к. создал новую папку для первой работы под С++, добавил ее в CMakeLists.txt, а директории под С, закомментировал
Скопировал CMakeLists.txt подставив необходимые директории и файлы
Разкомментировал команды для тестирования лабораторной работы
Сама лаба  ( ̄▽ ̄)
Попытка исправить ошибку сборки из-за флага -Werror, который ругается на fscanf
1) Добавлена проверка argc в main.
2) Проверка создания и чтения массива перед task1 и 2.
3) Убрана проверка arr != nullptr после присваивания arr = nullptr.
Перенес определение структуры из .cpp в .h для удобства
Чтобы не терять время закодил vector.cpp (Тест прошел)
Реализация стека и очереди на базе созданного ранее вектора (Тесты пройдены)
Перенос определения структуры обратно в .cpp
Второе задание:

Вход: (input.txt)
1 2 3 4

Отработка функции:
Сдвиг влево на 2 шага

Желаемый результат:
3 4 0 0
– Почистил от закомментированных блоков
– Исправил поиск максимального числа, при помощи функции array_get()
– Убрал повторное открытие файла, теперь программа последовательно считывает данные из .txt
Добавил в регулярное выражение условие для первого задания
Обновил входной массив для более показательного теста:
~ Максимальное число 6
~ Больше 6 по модулю только -9 и -8
~ Следовательно, желаемый результат = 2 (Указать в регулярном выражении "absCount = 2")
Теперь для направления и кол-во шагов значения берутся из файла (Последняя строчка в input "1 2", где 1 - направление влево; 2 - кол-во шагов)
Сделал отдельное объявление переменных
Добавление папки со второй лабораторной работой
Создание CMakeLists.txt для новой директории
Создание input.txt для теста
Файл со второй лабораторной
Включение тестов для вектора и стека
Скопировал из репозитория оригиналы для queue
Добавление 3 лабораторной работы
Добавление тест-кейса к 3 лабораторной работе
Создание файла для ввода данных
Лабораторная работа
Реализация функций list
Реализация функций queue
Добавление тестов для queue и list
– Убрал std:: т.к. using namespace std
– input.txt не закрывался
merge branches
Comment thread LabCPP_3/lab3.cpp Outdated
};

// Проверяет, возможен ли ход коня между startPos и endPos
bool moveCheck(int startPos, int endPos)

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 Outdated
# 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 LabCPP_3/lab3.cpp Outdated
const int BOARD_SIZE = 8;
const int BOARD_AREA = BOARD_SIZE * BOARD_SIZE;

struct Cell

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 LabCPP_3/lab3.cpp Outdated
parents[i] = -1; // ?
visitOrder[i] = 0;
}
bool visited[BOARD_AREA] = {};

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.

Можно проверять parent.

Comment thread LabCPP_3/lab3.cpp Outdated

// нумеруем посещенные клетки
for (int i=0; i<pathLen; i++)
visitOrder[path[i]] = i;

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
{
Data data;
ListItem *prev;
ListItem *next;

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.

В задании односвязный список.

@mrromanuza-dev

Copy link
Copy Markdown
Author

Ошибся и смерджил test 🤦‍♂️, сегодня вечером отправлю release

Убрал функцию list_item_prev, т.к. односвязный список
Решил оставить test, раз ход решения был верен. Убрал неиспользуемые функции и переменные
test -> master
@mrromanuza-dev

mrromanuza-dev commented Dec 18, 2025

Copy link
Copy Markdown
Author

Вопрос: А проверка через parent будет более правильной и чистой, нежели создание массива visited? Пробовал проверять через parent, получалось запутано, непонятно и с ошибкой сегментации

@Dovgalyuk

Copy link
Copy Markdown
Owner

Вопрос: А проверка через parent будет более правильной и чистой, нежели создание массива visited? Пробовал проверять через parent, получалось запутано, непонятно и с ошибкой сегментации

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

Реализация проверки через parents
Update lab3.cpp
@Dovgalyuk

Copy link
Copy Markdown
Owner

Принято.

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

2 participants