С++ ПрограммированиеЖурнал

[READY]::Калькулятор

Автор:

PS:

///----------------------------------------------------------------------------|

данный проект репроектился тут https://github.com/BDOTimer/Calculattor-2024.Apr

///----------------------------------------------------------------------------|

...

Итак, ... тик-так,

Цель:

уменьшить время, которое я провожу фо флейме.

Напишу ка, я тут, обычный(хз, или необычный) калькулятор.

Сразу о том, что это будет за калькулятор,
он будет НЕ КНОПОЧНЫЙ, а СТРОЧНЫЙ.

на вход подаётся строка текста,
на выходе результат вычисления.

всё просто.

1.
да,
я видел калькулятор у страуструпа,
и чуть ранее писал свои,
и даже пару написал своих.

2.
хочу исправить тамошние недостатки, такие как, например,
- парсинг и вычисление в одной и той же процедуре кода.
- негодность для рисования графиков.
- неочевидная легкость(т.е. сложность) добавления новых операторов.
- ...

3.
В релизе,
собсно форма, на которой два контрола:
- Control ввода строки текта
- Control вывода(рисования) графика
- ...(контролы масштаба и тп..)

4.
не будет никакого дедлайна - т.е. я не буду торопиться.
но я по опыту(возможно кривому) уже знаю, что у меня тут есть только 15 страниц.
в эти 15 страниц я обязуюсь уложиться))

(тутошнюю верстку я обсуждать не буду)

5.
заявить, что я пишу этот журнал для тех кто изучает С++,
будет брехня, ибо С++ ради С++ меня ваще никогда не интересовал,

однако, возможно оно и будет кому то полезно, я не возражаю.
в общем то эти записи чисто ради моего личного фана,
поддержания тонуса, и ясного осознания моей социальной животности.

...

Итого,
конечный желаемый результат разделю на две части:

1.
Сам консольный калькулятор.

2.
Демо вариантов его использования.

Ссылки на инструменты:

версия для винды(то что буду юзать я):

1. Редактор кода: Code::Blocks
2. С++17 компилятор(i686-posix-dwarf-gcc-13.1.0-mingw-w64msvcrt-11).

Вместо хеллоуворлда:

///----------------------------------------------------------------------------|
/// -std=c++17
/// Исходник в utf-8
///----------------------------------------------------------------------------:
#include <iostream>
#include <string>

///----------------------------------------------------------------------------|
/// Calculator.
///----------------------------------------------------------------------------:
namespace Calculator
{
    using T = double;

    struct  Instance
    {       Instance() = default;
            Instance(std::string_view s){ parse(s); }

        ///---------------------|
        /// Парсинг строки.     |
        ///---------------------:
        void parse(std::string_view s)
        {
            /// TODO ...
        }

        ///---------------------|
        /// Само вычисление.    |
        ///---------------------:
        T calc()
        {
            /// TODO ...

            return 0;
        }

        ///---------------------|
        /// Тест.               |
        ///---------------------:
        static bool test(std::string_view s, T r)
        {   Instance instance;
                     instance.parse(s);
            return   instance.calc ( ) == r;
        }

    private:

    };
}

#define TEST(a) Calculator::Instance::test(#a, a)

///-----------------------------|
/// Тесты.                      |
///-----------------------------:
bool tests()
{
    bool   isgood  = true;
           isgood &= TEST(3 - 3);
           isgood &= TEST(4 * 5);
    return isgood;
}

///----------------------------------------------------------------------------|
/// main.
///----------------------------------------------------------------------------:
int main()
{
    setlocale(0, "");

    std::wcout << L"Привет, я ваш Calculator!\n\n";
    std::wcout << L"Тесты: " << (tests() ? L"ОТЛИЧНO"
                                         : L"ПЛОХО\a") << '\n';
}

онлайн компилятор С++17

дальше ...

Страницы: 1 2 3 Следующая »

#C++, #fun, #сalculator

18 октября 2023 (Обновление: 31 июля 2024)