Программа выполняет упрощение арифметических выражений путем выполнения деления (вариант 4). Выражение разбирается в дерево, после чего применяется правило сокращения: если числитель содержит умножение на константу, а знаменатель является константой, и они делятся нацело, то коэффициент сокращается.
Пример преобразования: 4 * a / 2 -> 2 * a
Выражение представляется в виде бинарного дерева:
- Листья дерева — числа или переменные
- Внутренние узлы — операторы (+, -, *, /) с двумя дочерними узлами
Функция parse_simple_expr() разбирает строку выражения слева направо, создавая дерево операций. Поддерживаются числа, переменные и бинарные операторы.
Функция simplify_division() рекурсивно обходит дерево и применяет правила упрощения для оператора /:
- Если оба операнда — числа, вычисляет частное (если делится нацело)
- Если левый операнд — умножение числа на переменную, а правый — число, сокращает коэффициент
- Скомпилируйте программу:
gcc main.c -o lab3_task4- Запустите исполняемый файл:
gcc main.c -o lab3_task4