Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLabel
- from PyQt5.QtWidgets import QLineEdit, QTableWidget, QTableWidgetItem
- from math import sin, cos, tan
- class MainWidget(QWidget):
- def __init__(self):
- super().__init__()
- self.initUI()
- def initUI(self):
- self.setGeometry(100, 100, 300, 400)
- self.eq_label = QLabel(self)
- self.eq_label.setText('Введите уравнение:')
- self.eq_label.move(80, 30)
- self.eq_gap = QLineEdit(self)
- self.eq_gap.move(80, 60)
- self.equation = [] #коэф уравнения от пустого до старшего
- self.solve_btn = QPushButton('Решить', self)
- self.solve_btn.resize(self.solve_btn.sizeHint())
- self.solve_btn.move(75, 100)
- self.solve_btn.clicked.connect(self.build_eq)
- def add_eq(self, ind, val): #добавляем в equation коэф val степени ind
- if len(self.equation) <= ind:
- ln = len(self.equation)
- for i in range(ind - ln + 1):
- self.equation.append(0)
- self.equation[ind] += val
- def build_eq(self): #разбиваем уравнение на левую/правую части и вызываем get_eq
- s = ''.join(self.eq_gap.text().split())
- if not len(s):
- return
- h = s.split('=')
- left, right = h[0], h[1]
- self.get_eq(left, 1)
- self.get_eq(right, -1)
- self.solve()
- def get_eq(self, s, global_sign): #из строки с многочленом строим equation
- l = 0
- while l < len(s):
- sign = global_sign
- if s[l] in '+-':
- if s[l] == '-':
- sign *= -1
- l += 1
- val = 0
- while l < len(s) and s[l].isdigit():
- val += int(s[l])
- val *= 10
- l += 1
- if val > 10:
- val //= 10
- val *= sign
- if (l == len(s)) or (not s[l].isalpha()):
- self.add_eq(0, val)
- continue
- l += 1
- if l == len(s) or s[l] != '^':
- self.add_eq(1, val)
- l += 1
- st = 0
- while l < len(s) and s[l].isdigit():
- st += int(s[l])
- st *= 10
- l += 1
- st /= 10
- self.add_eq(st, val)
- def f(self, x): #f(x)
- ret = 0
- for i in range(len(self.equation)):
- ret += self.equation[i] + x ** i
- return ret
- def solve(self):
- pass
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- wid = MainWidget()
- wid.show()
- sys.exit(app.exec())
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement