Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 

Repository files navigation

Лабораторная работа 3. Преобразование арифметических выражений

Описание

Программа выполняет упрощение арифметических выражений путем выполнения деления (вариант 4). Выражение разбирается в дерево, после чего применяется правило сокращения: если числитель содержит умножение на константу, а знаменатель является константой, и они делятся нацело, то коэффициент сокращается.

Пример преобразования: 4 * a / 2 -> 2 * a

Структура данных

Выражение представляется в виде бинарного дерева:

  • Листья дерева — числа или переменные
  • Внутренние узлы — операторы (+, -, *, /) с двумя дочерними узлами

Парсинг

Функция parse_simple_expr() разбирает строку выражения слева направо, создавая дерево операций. Поддерживаются числа, переменные и бинарные операторы.

Упрощение

Функция simplify_division() рекурсивно обходит дерево и применяет правила упрощения для оператора /:

  1. Если оба операнда — числа, вычисляет частное (если делится нацело)
  2. Если левый операнд — умножение числа на переменную, а правый — число, сокращает коэффициент

Сборка и запуск

  1. Скомпилируйте программу:
   gcc main.c -o lab3_task4
  1. Запустите исполняемый файл:
  gcc main.c -o lab3_task4

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages