1. Выразим выражения по правилам языка Pascal:
a) 5 * 2 - 4
Решение:
Умножение имеет более высокий приоритет, чем вычитание. Поэтому, сначала выполним вычисление умножения: 5 * 2 = 10.
Затем, выполним вычитание: 10 - 4 = 6.
Ответ: 6.
б) 7 * х + 2
Решение:
Умножение имеет более высокий приоритет, чем сложение. Поэтому, сначала выполним вычисление умножения: 7 * х = 7х.
Затем, выполним сложение: 7х + 2.
Ответ: 7х + 2.
в) 8 * х - 3 * (х + у)
Решение:
Выполним умножение: 8 * х = 8х и 3 * (х + у) = 3х + 3у.
Затем, выполним вычитание: 8х - (3х + 3у).
Для выполнения операции в скобках, умножение 3 на каждый из элементов внутри скобок:
8х - 3х - 3у = 5х - 3у.
Ответ: 5х - 3у.
г) v^2 * х * у^2 * х * у
Решение:
По правилам алгебры, умножение можно проводить в любом порядке.
Выполним умножение: v^2 * х = v^2х, у^2 * х = у^2х, v^2х * у^2х = (vх * у)^2х.
Ответ: (vх * у)^2х.
2. Переведем запись с языка Pascal в нормальную форму:
f = (3 * x + 4 * y)/(2 * sqr(к) - 4 * t / y)
Решение:
Нормализация выражения подразумевает разделение на более простые составляющие.
Заменим sqr(к) на к^2, чтобы выразить возведение в квадрат в общепринятой форме:
f = (3 * x + 4 * y)/(2 * к^2 - 4 * t / y)
Затем, выполним умножение и деление в числителе и знаменателе:
f = (3 * x + 4 * y)/(2к^2 - (4 * t) / y)
Ответ: f = (3 * x + 4 * y)/(2к^2 - 4t/y).
Таким образом, мы записали выражения по правилам языка Pascal и перевели запись с языка Pascal в нормальную форму.
class Node:
def __init__(self, val):
self.l = None
self.r = None
self.v = val
class Tree:
def __init__(self):
self.root = None
def getRoot(self):
return self.root
def add(self, val):
if self.root is None:
self.root = Node(val)
else:
self._add(val, self.root)
def _add(self, val, node):
if val < node.v:
if node.l is not None:
self._add(val, node.l)
else:
node.l = Node(val)
else:
if node.r is not None:
self._add(val, node.r)
else:
node.r = Node(val)
def find(self, val):
if self.root is not None:
return self._find(val, self.root)
else:
return None
def _find(self, val, node):
if val == node.v:
return node
elif (val < node.v and node.l is not None):
return self._find(val, node.l)
elif (val > node.v and node.r is not None):
return self._find(val, node.r)
def deleteTree(self):
# garbage collector will do this for us.
self.root = None
def printTree(self):
if self.root is not None:
self._printTree(self.root)
def _printTree(self, node):
if node is not None:
self._printTree(node.l)
print(str(node.v) + ' ')
self._printTree(node.r)
# 3
# 0 4
# 2 8
tree = Tree()
tree.add(3)
tree.add(4)
tree.add(0)
tree.add(8)
tree.add(2)
tree.printTree()
print(tree.find(3).v)
print(tree.find(10))
tree.deleteTree()
tree.printTree()
Объяснение: