Skip to content

lasofiko/Calculate-

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

14 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Калькулятор для подсчета выражений в обратной польской записи

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

Основные функции прораммы:

  1. Функция zeloe(a) - проверка целого числа Назначение: Проверяет, является ли переданная строка целым числом

    Возвращает: True если число целое, False в противном случае

  2. Функция skob(s) - проверка правильности расстановки скобок Назначение: Проверяет корректность расстановки круглых скобок в выражении

    Алгоритм: Использует стек для отслеживания открывающих скобок

    Возвращает: True если скобки расставлены правильно, False если есть ошибки

  3. Функция del_skob(s) - удаление скобок Назначение: Удаляет все скобки из выражения, если они расставлены правильно

    Принцип работы: Заменяет скобки на пробелы

    Возвращает: Строку без скобок или None если скобки расставлены неправильно

  4. Функция chislo(s) - проверка возможности преобразования в число Назначение: Проверяет, можно ли строку преобразовать в число

    Возвращает: True если преобразование возможно, False в противном случае

  5. Функция obr_polsk(s) - основной вычислительный модуль Назначение: Вычисляет выражение в обратной польской записи

    Алгоритм: Использует стек для хранения промежуточных результатов

  6. Функция code() - основной цикл программы Назначение: Чтение и обработка входных данных

    Обработка ошибок:

    ZeroDivisionError - деление на ноль

    ValueError - некорректные значения

    SyntaxError - синтаксические ошибки

    IndexError - ошибки в структуре выражения

Установка и запуск: Требования 1.Python 3.10 или выше, что бы была поддержка mathc-case 2.Установленные пакеты: pytest

Шаги вычисления:

8 → стек: [8]

2 → стек: [8, 2]

5 → стек: [8, 2, 5]

  • → 2 * 5 = 10 → стек: [8, 10]
  • → 8 + 10 = 18 → стек: [18]

1 → стек: [18, 1]

3 → стек: [18, 1, 3]

2 → стек: [18, 1, 3, 2]

  • → 3 * 2 = 6 → стек: [18, 1, 6]
  • → 1 + 6 = 7 → стек: [18, 7]

4 → стек: [18, 7, 4]

  • → 7 - 4 = 3 → стек: [18, 3]

/ → 18 / 3 = 6 → стек: [6]

Ответ:6

Примеры выражений 3 3 + -> 6.0 -> 3 + 3

7 3 - -> 4.0 -> 7 - 3

4 4 * -> 16.0 -> 4 × 4

10 5 / -> 2.0 -> 10 ÷ 5

1 3 ** -> 1.0 -> 1³

7 3 // -> 2.0 -> 7 ÷ 3 (целочисленно)

7 3 % -> 1.0 -> 7 mod 3

15 ~ -> -15.0 -> Унарный минус

17 $ -> 17.0 -> Унарный плюс

Операции: Бинарные операции + - сложение - - вычитание * - умножение / - деление // - целочисленное деление % - остаток от деления ** - возведение в степень Унарные операции ~ - унарный минус (изменение знака) $ - унарный плюс (сохранение знака)

Требования: Целочисленные операции (// и %):

    Оба операнда должны быть целыми числами
    Деление на ноль запрещено

Деление (/):

    Деление на ноль запрещено    

Структура проекта: main.py - Основной файл программы calculator_tests.py - Тесты (если есть) README.md - Документация constants.py - Константы, использованные в программе

Тестирование:

Ограничения: Скобки должны быть оформлены с пробелами Поддерживаются только числа с плавающей точкой Максимальная точность определяется float Выражения должны быть разделены пробелами

Допущения: При целочисленном делении и взятии остатка от числа, числа должны быть целыми, но могут быть с плавающей точкой (например, 5.0 1.0 //) Пробел между скобкой и числом или операцией необязателен

Разработка:

Программа написана с использованием:

    Модуля sys
    Обработкa исключений с помощью try и except
    Стековая машина для вычисления выражений в обратной польской записи 

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages