https://github.com/potat-dev/coursework-cpp
Курсовая работа по теме: Умножение длинных чисел используя быстрое преобразование Фурье
https://github.com/potat-dev/coursework-cpp
Last synced: 14 days ago
JSON representation
Курсовая работа по теме: Умножение длинных чисел используя быстрое преобразование Фурье
- Host: GitHub
- URL: https://github.com/potat-dev/coursework-cpp
- Owner: potat-dev
- License: mit
- Created: 2022-10-06T22:48:29.000Z (over 3 years ago)
- Default Branch: main
- Last Pushed: 2022-11-29T02:26:43.000Z (over 3 years ago)
- Last Synced: 2025-02-21T23:16:29.497Z (over 1 year ago)
- Language: C++
- Homepage: https://potat.me/course-cpp
- Size: 3.59 MB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Сoursework С++
Курсовая работа по дисциплине «Основы программирования»
## Тема работы
```plaintext
Умножение длинных чисел используя быстрое преобразование Фурье
```
Задания курсовой работы:
- Реализовать алгоритм быстрого преобразования Фурье
- На его основе релизовать алгоритм умножения длинных чисел
- Программа должна уметь считывать числа из файлов
- Программа должна иметь интерфейс командной строки
Прочитать описание курсовой работы и используемых алгоримов можно [здесь](https://potat.me/course-cpp)
## Сборка
```console
mkdir build && cd build
cmake ..
cmake --build .
```
При сборке проекта на Linux вместо `cmake --build .` можно использовать `make`
[](https://github.com/cyberpotat42/coursework-cpp/actions/workflows/cmake.yml)
## Запуск
```console
multiplier [OPTIONS] [file 1] [file 2] [output]
```
### Параметры
- `-h, --help` - вывод справки
- `-v, --verbose` - вывод дополнительной информации
- `-i, --interactive` - интерактивный режим
- `-c, --column` - использовать умножение столбиком
- `-b, --benchmark` - выполнить бенчмарк (указывается количество итераций)
### Примеры использования
Умножение двух чисел из файлов
```console
> multiplier 1.txt 2.txt out.txt
Multiplying... (press Ctrl + C to interrupt)
```
Более подробный вывод:
```console
> multiplier 1.txt 2.txt out.txt -v
Number 1 size: 42
Number 2 size: 4200
Multiplying... (press Ctrl + C to interrupt)
Result size: 4242
Result saved to out.txt
```
Использование бенчмарка:
```console
> multiplier 1.txt 2.txt out.txt -b 100
Multiplying... (press Ctrl + C to interrupt)
Average time: 0.0042 ms / iter
```
Интерактивный режим
```console
> multiplier -i
Enter two big numbers to multiply them
Press Ctrl + C or leave input empty to exit
[1] < -123456789
[1] < 123456789123456789
[1] > -15241578765432099750190521
[2] < aboba
[x] Invalid number
[3] < (pressing enter)
Bye! Have a nice day :)
```
Более подробный вывод:
```console
> multiplier -i -v
Enter two big numbers to multiply them
Press Ctrl + C or leave input empty to exit
Enter first number:
[1] < 101010101010101010
[i] Digits count: 18
Enter second number:
[1] < 424242424242424242
[i] Digits count: 18
Result:
[1] > 42852770125497398138965411692684420
[i] Digits count: 35
Enter first number:
[2] < -00001
[i] Digits count: 1
Enter second number:
[2] < -0
[x] Invalid number
```
Использование бенчмарка:
```console
> multiplier -i -v -b 100
Enter two big numbers to multiply them
Press Ctrl + C or leave input empty to exit
[i] Each operation will be repeated 100 times
Enter first number:
[1] < 011010000110100100100001
[i] Digits count: 23
Enter second number:
[1] < 424242424242424242424242
[i] Digits count: 24
Result:
[1] > 4670909137618224284848904419999953290866624242
[i] Digits count: 46
[i] Average time: 0.0042 ms / iter
```
## Тестирование
```console
ctest
```