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

5.9 KiB
Raw Blame History

Руководство по обновлению калькуляторов

Статус обновлений

Завершено:

  1. step_by_step_solver.py - добавлены операции MULTIPLICATION и DIVISION
  2. calculater2.py (Десятичный) - добавлены 4 колонки (+, -, ×, ÷)
  3. binary_calculeator4.py (Двоичный) - добавлены 4 колонки (+, -, ×, ÷)
  4. octogon_calculeator6.py (Восьмеричный) - добавлены 4 колонки (+, -, ×, ÷)

Требуется завершить:

  1. sedecim_calculeator8.py (Шестнадцатеричный)
  2. pentecostal_calculeator10.py (50-ричный)

Инструкция для завершения оставшихся калькуляторов

Для sedecim_calculeator8.py и pentecostal_calculeator10.py:

1. Обновить init метод класса:

Добавить:

# Результаты для умножения и деления
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:

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:

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 метод:

Добавить поля ввода для умножения и деления:

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):

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 (шестнадцатеричный):

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. Протестируйте все калькуляторы

Все изменения следуют единому паттерну, использованному в уже обновленных калькуляторах.