Рейтинг: 43
Верифицирован через Сбер ID
Всего отзывов: 0
  • Работ в портфолио: 3
  • Типовых услуг: 0
  • Работ на продажу: 0
  • Образование: Бакалавриат
  • Стаж работы: 1 год
  • Тип занятости: Подработка
  • Юридический статус:Частное лицо
Был на сайте:

Проект "Электронная таблица (spreadsheet)" для локального сервиса.

Используемые навыки:

Описание

Для индивидуальных задач заказчика был необходим легковесный аналог существующих решений (лист таблицы Microsoft Excel \ Google Sheets) полностью реализованный на C++ с упором на формульную часть.

Решение

- Реализовал парсинг формул и вычислительную логику с использованием ANTLR (лексер, парсер, обход AST на C++).
- Реализовал поиск циклических зависимостей с оптимизацией, обеспечивающей проход по каждой ячейке только один раз через DFS.
- Оптимизация инвалидации кэша с проходом по ячейкам только один раз реализована через BFS.
- Сборка - CMake.

Результат

Разработал эффективный, легковесный и нетребовательный к ресурсам вариант электронной таблицы, поддерживающий избранные заказчиком функции:
- Парсинг текста и формул;
- Добавление новой ячейки, гарантирующее консистентное состояние таблицы
- Оптимизация таблицы при помощи кэша формульных ячеек.
- Создание ссылок, исключая возникновение циклических зависимостей.
- Интерпретация текстовых ячеек для использования в формулах.
- Визуализация возникших исключений, а также данных ячейки \ результата вычислений в виде текста.

Ссылки на примеры реализации

 github.com/ScartByPrime/cpp-spreadsheet

Презентация проекта

new_cell.jpg
formula_calculation.jpg
cyclic_dependencies.jpg
cache_invalidation.jpg

Оценили проект:

0