Files
Calculater_chelgu/UPGRADE_GUIDE.md
2025-11-10 12:18:40 +05:00

138 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Руководство по обновлению калькуляторов
## Статус обновлений
### ✅ Завершено:
1. **step_by_step_solver.py** - добавлены операции `MULTIPLICATION` и `DIVISION`
2. **calculater2.py** (Десятичный) - добавлены 4 колонки (+, -, ×, ÷)
3. **binary_calculeator4.py** (Двоичный) - добавлены 4 колонки (+, -, ×, ÷)
4. **octogon_calculeator6.py** (Восьмеричный) - добавлены 4 колонки (+, -, ×, ÷)
### ⏳ Требуется завершить:
5. **sedecim_calculeator8.py** (Шестнадцатеричный)
6. **pentecostal_calculeator10.py** (50-ричный)
## Инструкция для завершения оставшихся калькуляторов
### Для sedecim_calculeator8.py и pentecostal_calculeator10.py:
#### 1. Обновить __init__ метод класса:
Добавить:
```python
# Результаты для умножения и деления
self.result_mult = ft.Text(value="0", size=30, width=300)
self.result_div = ft.Text(value="0", size=30, width=300)
self.decimal_mult = ft.Text(value="(0₁₀)", size=14, color="#B0B0B0", width=300)
self.decimal_div = ft.Text(value="(0₁₀)", size=14, color="#B0B0B0", width=300)
# Поля ввода для умножения
self.input_mult_1 = None
self.input_mult_2 = None
# Поля ввода для деления
self.input_div_1 = None
self.input_div_2 = None
# Контейнеры для пошагового решения
self.steps_mult = ft.Column(scroll=ft.ScrollMode.AUTO, spacing=5)
self.steps_div = ft.Column(scroll=ft.ScrollMode.AUTO, spacing=5)
```
#### 2. Добавить методы calculate_multiplication и calculate_division:
```python
def calculate_multiplication(self, e):
# Логика умножения - преобразовать в десятичную, умножить, вернуть обратно
# Вызвать self.show_steps_mult(val1, val2, Operation.MULTIPLICATION)
def calculate_division(self, e):
# Логика деления - преобразовать в десятичную, разделить, вернуть обратно
# Проверка деления на ноль
# Вызвать self.show_steps_div(val1, val2, Operation.DIVISION)
```
#### 3. Добавить методы show_steps_mult и show_steps_div:
```python
def show_steps_mult(self, num1: str, num2: str, operation: Operation):
# Аналогично show_steps_left/right
# Обновить self.steps_mult
def show_steps_div(self, num1: str, num2: str, operation: Operation):
# Аналогично show_steps_left/right
# Обновить self.steps_div
```
#### 4. Обновить test_data метод:
Добавить поля ввода для умножения и деления:
```python
self.input_mult_1 = ft.TextField(...)
self.input_mult_2 = ft.TextField(...)
self.input_div_1 = ft.TextField(...)
self.input_div_2 = ft.TextField(...)
```
Добавить две новые колонки в ft.Row (controls):
```python
ft.Column( # Умножение
controls=[
self.input_mult_1,
ft.Text("× Умножение", ...),
self.input_mult_2,
ft.Container(content=...), # result_mult
ft.CupertinoButton("=", on_click=self.calculate_multiplication),
ft.Container(content=self.steps_mult, ...)
]
),
ft.Column( # Деление
controls=[
self.input_div_1,
ft.Text("÷ Деление", ...),
self.input_div_2,
ft.Container(content=...), # result_div
ft.CupertinoButton("=", on_click=self.calculate_division),
ft.Container(content=self.steps_div, ...)
]
)
```
## Примечания:
- Для **sedecim_calculeator8.py**: Используйте существующие методы `hex_to_decimal` и `decimal_to_hex`
- Для **pentecostal_calculeator10.py**: Используйте существующие методы `from_base50` и `to_base50`
- Во всех случаях импортируйте `Operation` из step_by_step_solver
- Проверьте деление на ноль в методе calculate_division
## Шаблон для calculate_multiplication (шестнадцатеричный):
```python
def calculate_multiplication(self, e):
try:
num1 = self.hex_to_decimal(self.input_mult_1.value.upper())
num2 = self.hex_to_decimal(self.input_mult_2.value.upper())
result_decimal = num1 * num2
result_hex = self.decimal_to_hex(result_decimal)
self.result_mult.value = f"HEX: {result_hex}"
self.decimal_mult.value = f"DEC: {result_decimal}"
if '.' not in self.input_mult_1.value and '.' not in self.input_mult_2.value:
hex_val1 = self.input_mult_1.value.upper().lstrip('-+') if self.input_mult_1.value else "0"
hex_val2 = self.input_mult_2.value.upper().lstrip('-+') if self.input_mult_2.value else "0"
self.show_steps_mult(hex_val1, hex_val2, Operation.MULTIPLICATION)
else:
self.steps_mult.controls.clear()
self.steps_mult.controls.append(
ft.Text("Пошаговое решение доступно только для целых чисел", color="#FFD700", size=12)
)
self.steps_mult.update()
except Exception as ex:
self.result_mult.value = f"Ошибка: {str(ex)}"
self.decimal_mult.value = "DEC: ошибка"
self.page.update()
```
## Следующие шаги:
1. Откройте sedecim_calculeator8.py
2. Примените изменения согласно шаблону выше
3. Повторите для pentecostal_calculeator10.py
4. Протестируйте все калькуляторы
Все изменения следуют единому паттерну, использованному в уже обновленных калькуляторах.