GithubHelp home page GithubHelp logo

lab_1.sem_4's Introduction

Команда:

  • Мортина Анастасия
  • Мамаева Ольга
  • Лупша Егор
  • Косарев Егор
  • Шушпанов Никита

Лабораторная работа 1: Алгебра полиномов

Цели и задачи

В рамках лабораторной работы ставится задача создания программных средств, поддерживающих реализацию шести видов таблиц, предназначенных для эффектривного хранения полинома, его имени и ссылки на объект соответсвующего класса:

  • неупорядоченные таблицы:
    • Линейная таблица на массиве;
    • Линейная таблица на списке;
  • упорядоенные таблицы:
    • Таблица на поисковом дереве (АВЛ или красно-черном);
    • Таблица на массиве;
  • хеш-таблицы:
    • Хеш-таблица с открытым перемешиванием;
    • Хеш-таблица со списками (метод цепочек).

В рамках лабораторной работы также реализовать выполнение следующих операций над полиномами:

  • ввод полинома и его имени;
  • организация хранения полинома;
  • удаление введенного ранее полинома;
  • сложение;
  • вычитание;
  • умножение;
  • деление;
  • нахождение производной при заданной переменной дифференцирования;
  • нахождение неопределенного интеграла;
  • вычисление значения полинома при заданных значениях переменных;
  • вывод полиномов и результата операций;
  • возможность получения выражения из полиномов.

В каждой таблице должна быть возможность удаления, добавления и поиска полинома по имени. Удаление и добавление полинома должно происходить сразу во всех таблицах, поиск же должен осуществляться только в активной таблице. Данные операции над таблицами реализовать, как виртуальные методы.

В процессе выполнения лабораторной работы требуется использовать систему контроля версий [Git][git] и фрэймворк для разработки автоматических тестов [Google Test][gtest].

Условия и ограничения

При выполнении лабораторной работы нужно учитывать следующие основные условия:

  • разработака структуры хранения должна быть реализована в виде различных таблиц и ориентирована на представление полиномов от трех переменнных;
  • степени переменных полиномов не могут превышать значение 9;
  • в структуре хранения должны находиться мономы только с ненулевыми коэффициентами;
  • для организации быстрого доступа использовать упорядоченное хранение мономов (лексикографический порядок);
  • имя полинома должно быть уникально.

Список объектов

Для реализации программы будут использованы такие основные объекты, как:

  • таблицы:
    • линейная на массиве;
    • линейная на списке;
    • упорядоченная на массиве;
    • на поисковом дереве (АВЛ или красно-черном);
    • хеш таблица с открытым перемешиванием;
    • хеш таблица со списками (метод цепочек).
  • список;
  • моном;
  • полином.

Список основных алгоритмов

Для работы с полиномами будут необходимы такие алгоритмы, как:

  • сложение;
  • вычитание;
  • умножение;
  • дифференцирование;
  • интегрирование;
  • вычисление в точке.

Для работы с таблицами понадобятся алгоритмы:

  • вставка;
  • удаление;
  • поиск;
  • сортировка(для упорядоченных);
  • запись/чтение в файл.

Общая структура проекта

Структура проекта:

  • gtest — библиотека Google Test.
  • base — директория для размещения заголовочных файлов и тестового приложения.
  • base_test — директория с модульными тестами и основным приложением, инициализирующим запуск тестов.
  • README.md — информация о проекте, которую вы сейчас читаете.
  • Служебные файлы:
    • .gitignore — перечень расширений файлов, игнорируемых Git при добавлении файлов в репозиторий.

Используемые инструменты

  • Система контроля версий [Git][git].
  • Фреймворк для написания автоматических тестов [Google Test][gtest].
  • Среда разработки Microsoft Visual Studio 2019.

lab_1.sem_4's People

Contributors

n1k1tkooo avatar nastyamortina avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.