Skip to content

Commit 68123fb

Browse files
authored
Merge pull request #24 from PeeachPie/readme
readme updated
2 parents 75fcd06 + ad8cd96 commit 68123fb

File tree

2 files changed

+94
-10
lines changed

2 files changed

+94
-10
lines changed

README.md

Lines changed: 94 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,28 +2,114 @@
22

33
Цель [коллоквиума](https://docs.google.com/document/d/1Dv_6AIhxg_3ezu6VMcEnMpyfRzgym9l8PmE4ULGfjgM/edit?tab=t.0) - создать систему компьютерной алгебры
44

5+
### Архитектура проекта
6+
7+
Проект имеет следующую структуру:
8+
9+
```
10+
.
11+
├── CMakeLists.txt
12+
├── src
13+
│   ├── api
14+
│   │   └── calculator
15+
│   │   ├── calculator.cpp
16+
│   │   └── calculator.hpp
17+
│   ├── main.cpp
18+
│   ├── modules
19+
│   │   ├── numbers
20+
│   │   │   ├── integer
21+
│   │   │   │   ├── integer.cpp
22+
│   │   │   │   └── integer.hpp
23+
│   │   │   ├── natural
24+
│   │   │   │   ├── natural.cpp
25+
│   │   │   │   └── natural.hpp
26+
│   │   │   └── rational
27+
│   │   │   ├── rational.cpp
28+
│   │   │   └── rational.hpp
29+
│   │   └── polynomial
30+
│   │   ├── polynomial.cpp
31+
│   │   └── polynomial.hpp
32+
│   └── ui
33+
└── tst
34+
├── CMakeLists.txt
35+
├── test_calculator.cc
36+
├── test_integer.cc
37+
├── test_natural.cc
38+
├── test_polynomial.cc
39+
└── test_rational.cc
40+
```
41+
42+
Рассмотрим ее по порядку.
43+
44+
## src
45+
Содержит основную логику проекта:
46+
- модули
47+
- апи модулей
48+
- интерфейс
49+
50+
### src/modules
51+
Содержит реализацию модулей.
52+
Модули разделены по блокам:
53+
- натуральные числа
54+
- целые числа
55+
- рациональные числа
56+
- полиномы над рациональными числами
57+
58+
Каждый блок содержит `*.hpp` и `*.cpp` файлы с объявлением класса блока и его реализацией соответственно.
59+
60+
- `class Naturals` - Класс натуральных чисел. Использует строку цифр и старший разряд.
61+
- `class Integer` - Класс целых чисел. Использует натуральное число и знак.
62+
- `class Rational` - Класс рациональных чисел. Использует целое число в качестве числителя и натуральное в качестве знаменателя.
63+
- `class Polynomial` - Класс рациональных полиномов. Использует структуру данных "красно-черное дерево" (aka std::map) для хранения рациональных коэфициентов. Это необходимо для эффективной работы с разряженными данными (например `x^n + 1`, где `n` большое число). Максимальная степень многочлена ограничена `INT_MAX = 2^31 - 1`.
64+
65+
### src/api
66+
Содержит апи для работы с рациональными полиномами. Получает на вход выражение в виде строки (например `(x^2 - 1)/(x - 1)`) и возвращает посчитанное выражение (например `1 * x^1 + 1`).
67+
68+
### src/ui
69+
Содержит пользовательский интерфейс. Реализован при помощи `Qt6`. Формирует запрос к апи и отображает ответ.
70+
71+
Пример работы:
72+
![alt text](image.png)
73+
74+
Важно отметить, что калькулятор работает именно с рациональными полиномами, а это значит, что `GCD(5, 10)` может быть равен любому рациональному числу. Договоримся, что ответ будет равен `1`.
75+
76+
## tst
77+
Содержит более 180 тестов для проверки работы блоков и апи. Все тесты проходят успешно.
78+
579
### Сборка и запуск проекта
680

7-
Перейти в директорию build (при необходимости создать) и выполнить следующие команды:
81+
Перед началом работы необходимо убедиться в том, что у вас установлен `Qt6`, иначе будет собрана тестовая версия без UI.
82+
83+
Способы установки приводить не будем, так как это может сильно зависеть от вашей системы (по этой же причине отсутствует исполняемый файл). Искренне надеемся, что наш пользователь сможет разобраться с установкой.
84+
85+
86+
Далее необходимо выполнить следующие действия:
87+
1. Создать директорию для сбоки в корне проекта и перейти в нее
888

9-
1. Создать Makefile
1089
```bash
11-
cmake ..
90+
mkdir build
91+
cmake -B build
92+
cd build
1293
```
1394

14-
2. Собрать исполняемый файл
95+
2. Создать Makefile
96+
```bash
97+
cmake
98+
```
99+
100+
3. Собрать исполняемый файл
15101
```bash
16102
make
17103
```
18104

19-
3. Запустить программу
105+
4. Запустить программу
20106
```bash
21107
./app
22108
```
23109

24110
Или же просто
25111
```bash
26-
cmake .. && make && ./app
112+
cmake && make && ./app
27113
```
28114

29115
### Запуск тестов
@@ -40,7 +126,7 @@ ctest -R "NaturalTests.CreateDefault"
40126

41127
Или вместе со сборкой
42128
```bash
43-
cmake .. && make && ctest -R "NaturalTests.CreateDefault"
129+
cmake && make && ctest -R "NaturalTests.CreateDefault"
44130
```
45131

46132
Возможный вывод:
@@ -56,9 +142,7 @@ Test project /colloquium_dmiti/build
56142
Total Test time (real) = 0.01 sec
57143
```
58144

59-
### Запуск тестов 2
60-
61-
Чтобы вывести логи тестов введите эту команду
145+
Вывод логов проваленных тестов:
62146
```bash
63147
ctest --rerun-failed --output-on-failure
64148
```

image.png

65.2 KB
Loading

0 commit comments

Comments
 (0)