Ну вот я и решил создать заголовочный файл в котором будет основная функция, решающая формулы следующего содержания… формула может содержать неопределенное количество чисел, как положительных так и отрицательных, может работать со:
сложением(-);
вычитанием(+);
умножением(*);
делением(/);
возведением в ступень(^);
скобками( () );
квадратными корнями(√, ввести данный символ можно зажав ALT и набрав 251 на клавишах цифровой клавиатуры).
Также в пространстве имен Calculator есть функция нахождения факториала fact(N), которая поддерживает дробовые числа. Почему то я поленился добавить ее поддержку, ох уж эта прокрастинация. Да и вообще в пространстве имен Calculator есть много полезных и не очень функций.
Давайте же посмотрим насколько это просто… После добавления файлов в ваш проект (Я надеюсь вы умете добавлять заголовочные файлы в свой проект) мы пишем следующий код:
#include <iostream> #include "Calculator.h" using namespace std; int main() { cout << calculator("2 + 2") << endl; return 0; }
Но согласитесь это на уровне «hello world!» давайте сделаем что-то более серьезное…
Вот наш следующий пример:
#include <iostream> #include <string> #include "Calculator.h" using namespace std; int main() { string input; while(true) { cout << ">"; getline(cin, input); cout << ">"; results res = calculator(input); if(res.error == true) cout << "error" << endl; else cout << res.result << endl; } return 0; }
Подобных заголовочных файлов я еще видел, но я подозреваю что они есть. Если кто знает — пишите будет интересно.
На мой взгляд получилось немного сыровато, можно добавить математические константы, поддержку нескольких операторов и функций. Также не помешали бы проверки входных формул на их корректность, хотя бы try catch. Пишите как бы вы хотели улучшить данный код, какие ошибки нашли, будем улучшать и исправлять.
Обратите внимание: на github есть файл readme в котором есть дополнительная информация.
Также хотел спросить: правильно ли я выражаюсь когда говорю «заголовочный файл», ведь весь код не только в заголовочном файле?
Прошу не ругать меня за мою неграмотность в файлах проекта. Сам знаю что нужно бы все проверить.
ссылка на оригинал статьи https://habr.com/ru/post/461701/
Добавить комментарий