Giter VIP home page Giter VIP logo

equationcalculator's Introduction

Bonch_Project_Java

Theme: Калькулятор выражений

Discipline

  • Технологии и методы программирования a.k.a. Разработка защищённых приложений
  • Project Goal

  • Реализовать калькулятор, вычисляющий выражение в заданном контексте.
  • Освоить средства создания UML диаграмм на Java
  • Description

    Поскольку калькулятор поддерживает простейшие операции:
  • Сложение +
  • Вычитание -
  • Умножение *
  • Деление /
  • Расстановка открывающей ( скобок и закрывающей ) скобок

  • Было решено рассмотреть возможные варианты решения поставленной задачи:
    1. Располагать операции в виде Бинарного дерева, ресурсоемко и сложно!
    2. Разбивать выражение на токены.
    Был выбран второй вариант.

    Также при выполнении задачи был открыт следующий термин:

    Обратная польская нотация — форма записи математических и логических выражений,
    в которой операнды расположены перед знаками операций.

    Логика программы

    Мы посимвольно пробегаемся по всему выражению, каждому символу соответствует определенный приоритет:
  • Умножение «*» или Деление «/» приоритет 3
  • Сложение «+» или Вычитание «–» приоритет 2
  • Открывающая скобка «(» приоритет 1
  • Числа «0…9» приоритет 0
  • Закрывающая скобка «)» приоритет -1
  • Программа выполняется с некоторыми оговорками:

  • если нам встречается число, то мы выводим его в строку вывода;
  • если встречается математический знак, то мы кладем его в стек, при этом проверяя стек на пустоту, если стек не пустой, то нужно достать все знаки из него до тех пор, пока приоритет последующего знака не будет меньше текущего;
  • По прохождению программы у нас имеется два набора данных:

    Строке вывода, в которой находятся набор переданных чисел Стек с математическими операциями Полученные два набора данных преобразуются в обратную польскую нотацию, из которой и получается итоговый ответ по следующей логике:
  • если нам встречается число, то оно передается в стек
  • если нам встречается математическая операция, то берутся последние два элемента в стеке и над ними выполняется соответствующее преобразование, которое записывается в стек;
  • Я не хотел сдавать экзамен
    Поэтому сделал следующий проект

    equationcalculator's People

    Contributors

    misterzurg avatar

    Watchers

     avatar  avatar

    Forkers

    shad0w-jo4n

    Recommend Projects

    • React photo React

      A declarative, efficient, and flexible JavaScript library for building user interfaces.

    • Vue.js photo Vue.js

      🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

    • Typescript photo Typescript

      TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

    • TensorFlow photo TensorFlow

      An Open Source Machine Learning Framework for Everyone

    • Django photo Django

      The Web framework for perfectionists with deadlines.

    • D3 photo D3

      Bring data to life with SVG, Canvas and HTML. 📊📈🎉

    Recommend Topics

    • javascript

      JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

    • web

      Some thing interesting about web. New door for the world.

    • server

      A server is a program made to process requests and deliver data to clients.

    • Machine learning

      Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

    • Game

      Some thing interesting about game, make everyone happy.

    Recommend Org

    • Facebook photo Facebook

      We are working to build community through open source technology. NB: members must have two-factor auth.

    • Microsoft photo Microsoft

      Open source projects and samples from Microsoft.

    • Google photo Google

      Google ❤️ Open Source for everyone.

    • D3 photo D3

      Data-Driven Documents codes.