finaly
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
import flet as ft
|
import flet as ft
|
||||||
import designer as ds
|
import designer as ds
|
||||||
from pages.tabs import start1,calculater2, binary_data3, binary_calculeator4, octogon_data5, octogon_calculeator6, sedecim_data7,sedecim_calculeator8, pentecostal_system9, pentecostal_calculeator10
|
from pages.tabs import start1,calculater2, binary_data3, binary_calculeator4, octogon_data5, octogon_calculeator6, sedecim_data7,sedecim_calculeator8, pentecostal_system9, pentecostal_calculeator10, arbitrary_calculator11
|
||||||
|
|
||||||
class Main_page(ft.View):
|
class Main_page(ft.View):
|
||||||
def __init__(self, page):
|
def __init__(self, page):
|
||||||
@@ -26,6 +26,7 @@ class Main_page(ft.View):
|
|||||||
sedecim_calculeator8.Button_sedecim_calculator(),
|
sedecim_calculeator8.Button_sedecim_calculator(),
|
||||||
pentecostal_system9.Button_binary_data(),
|
pentecostal_system9.Button_binary_data(),
|
||||||
pentecostal_calculeator10.Button_quinquagesimal_calculator(),
|
pentecostal_calculeator10.Button_quinquagesimal_calculator(),
|
||||||
|
arbitrary_calculator11.Button_arbitrary_calculator(),
|
||||||
ft.Container(
|
ft.Container(
|
||||||
bgcolor="#280A3F",
|
bgcolor="#280A3F",
|
||||||
expand=True,
|
expand=True,
|
||||||
|
|||||||
1030
app/src/pages/tabs/arbitrary_calculator11.py
Normal file
1030
app/src/pages/tabs/arbitrary_calculator11.py
Normal file
File diff suppressed because it is too large
Load Diff
@@ -155,7 +155,8 @@ class StepByStepSolver:
|
|||||||
step1 = Step(
|
step1 = Step(
|
||||||
"Исходные данные",
|
"Исходные данные",
|
||||||
f"Необходимо преобразовать число {number} из {self.get_system_name()} " +
|
f"Необходимо преобразовать число {number} из {self.get_system_name()} " +
|
||||||
f"({self.base}-ричной) системы в {target_base}-ричную систему",
|
f"({self.base}-ричной) системы в {target_base}-ричную систему.\n" +
|
||||||
|
f"Это как перевод с одного языка на другой - число остаётся тем же, меняется только способ записи!",
|
||||||
f"Исходное число: {'-' if is_negative else ''}{number}₍{self.base}₎"
|
f"Исходное число: {'-' if is_negative else ''}{number}₍{self.base}₎"
|
||||||
)
|
)
|
||||||
steps.append(step1)
|
steps.append(step1)
|
||||||
@@ -164,20 +165,39 @@ class StepByStepSolver:
|
|||||||
if self.base != 10:
|
if self.base != 10:
|
||||||
decimal_value = 0
|
decimal_value = 0
|
||||||
calculation = []
|
calculation = []
|
||||||
|
position_table = []
|
||||||
|
|
||||||
|
# Создаём таблицу разрядов
|
||||||
|
digits_list = list(reversed(number))
|
||||||
|
position_table.append("┌─" + "─┬─".join(["─"*5 for _ in digits_list]) + "─┐")
|
||||||
|
position_table.append("│ " + " │ ".join([f"Поз {i}" for i in range(len(digits_list))]) + " │")
|
||||||
|
position_table.append("├─" + "─┼─".join(["─"*5 for _ in digits_list]) + "─┤")
|
||||||
|
position_table.append("│ " + " │ ".join([f"{self.base}^{i}={self.base**i}".center(5) for i in range(len(digits_list))]) + " │")
|
||||||
|
position_table.append("├─" + "─┼─".join(["─"*5 for _ in digits_list]) + "─┤")
|
||||||
|
position_table.append("│ " + " │ ".join([f"{d}".center(5) for d in digits_list]) + " │")
|
||||||
|
position_table.append("└─" + "─┴─".join(["─"*5 for _ in digits_list]) + "─┘")
|
||||||
|
|
||||||
for i, digit in enumerate(reversed(number)):
|
for i, digit in enumerate(reversed(number)):
|
||||||
digit_value = self.digits.index(digit)
|
digit_value = self.digits.index(digit)
|
||||||
power = self.base ** i
|
power = self.base ** i
|
||||||
term_value = digit_value * power
|
term_value = digit_value * power
|
||||||
decimal_value += term_value
|
decimal_value += term_value
|
||||||
calculation.append(f"{digit}×{self.base}^{i} = {digit_value}×{power} = {term_value}")
|
calculation.append(f"Позиция {i}: {digit} × {self.base}^{i} = {digit_value} × {power} = {term_value}")
|
||||||
|
|
||||||
visual = "\n".join(calculation)
|
visual = "\n".join(position_table)
|
||||||
visual += f"\n\nСумма: {' + '.join([str(digit_value * (self.base ** i)) for i, digit in enumerate(reversed(number)) for digit_value in [self.digits.index(digit)]])} = {decimal_value}"
|
visual += "\n\nПОШАГОВЫЙ РАСЧЁТ:\n"
|
||||||
|
visual += "Каждая позиция (справа налево) имеет свой \"вес\" - степень основания.\n"
|
||||||
|
visual += f"В {self.base}-ричной системе веса позиций: 1, {self.base}, {self.base**2}, {self.base**3}...\n\n"
|
||||||
|
visual += "\n".join(calculation)
|
||||||
|
|
||||||
|
sum_parts = [str(self.digits.index(digit) * (self.base ** i)) for i, digit in enumerate(reversed(number))]
|
||||||
|
visual += f"\n\nИТОГОВАЯ СУММА: {' + '.join(sum_parts)} = {decimal_value}"
|
||||||
|
|
||||||
step2 = Step(
|
step2 = Step(
|
||||||
"Перевод в десятичную систему",
|
"Перевод в десятичную систему",
|
||||||
f"Каждую цифру умножаем на {self.base} в степени её позиции (справа налево, начиная с 0)",
|
f"Представьте, что каждая позиция - это \"кармашек\" с определённой ценностью.\n" +
|
||||||
|
f"Самый правый \"стоит\" 1, следующий - {self.base}, потом {self.base**2} и так далее.\n" +
|
||||||
|
f"Мы умножаем цифру на \"цену\" её позиции и складываем всё вместе.",
|
||||||
visual,
|
visual,
|
||||||
f"{decimal_value}₍₁₀₎"
|
f"{decimal_value}₍₁₀₎"
|
||||||
)
|
)
|
||||||
@@ -190,23 +210,35 @@ class StepByStepSolver:
|
|||||||
divisions = []
|
divisions = []
|
||||||
temp = decimal_value
|
temp = decimal_value
|
||||||
result_digits = []
|
result_digits = []
|
||||||
|
step_num = 1
|
||||||
|
|
||||||
|
visual = f"МЕТОД: Делим число на {target_base} до тех пор, пока не получим 0.\n"
|
||||||
|
visual += "Каждый остаток от деления - это одна цифра результата.\n"
|
||||||
|
visual += "Важно! Первый остаток будет ПОСЛЕДНЕЙ цифрой ответа.\n\n"
|
||||||
|
|
||||||
while temp > 0:
|
while temp > 0:
|
||||||
remainder = temp % target_base
|
remainder = temp % target_base
|
||||||
quotient = temp // target_base
|
quotient = temp // target_base
|
||||||
result_digits.insert(0, self.digits[remainder])
|
result_digits.insert(0, self.digits[remainder])
|
||||||
divisions.append(f"{temp} ÷ {target_base} = {quotient}, остаток: {remainder} ({self.digits[remainder]})")
|
divisions.append(f"Шаг {step_num}: {temp} ÷ {target_base} = {quotient}, остаток: {remainder} → цифра '{self.digits[remainder]}'")
|
||||||
|
step_num += 1
|
||||||
temp = quotient
|
temp = quotient
|
||||||
|
|
||||||
result_number = ''.join(result_digits) if result_digits else "0"
|
result_number = ''.join(result_digits) if result_digits else "0"
|
||||||
|
|
||||||
visual = "\n".join(divisions)
|
visual += "\n".join(divisions)
|
||||||
visual += f"\n\nЧитаем остатки снизу вверх: {result_number}"
|
visual += "\n\n" + "="*50
|
||||||
|
visual += f"\nСобираем остатки СНИЗУ ВВЕРХ (от последнего к первому):\n"
|
||||||
|
visual += "═"*50 + "\n"
|
||||||
|
for i, digit in enumerate(result_digits):
|
||||||
|
visual += f" ↑ {digit} "
|
||||||
|
visual += f"\n\nОтвет: {result_number}"
|
||||||
|
|
||||||
step3 = Step(
|
step3 = Step(
|
||||||
f"Перевод в {target_base}-ричную систему",
|
f"Перевод в {target_base}-ричную систему",
|
||||||
f"Делим число на {target_base} и записываем остатки. " +
|
f"Алгоритм деления с остатком - классический способ перевода.\n" +
|
||||||
"Читаем остатки снизу вверх",
|
f"Представьте, что вы раскладываете конфеты по коробкам: в каждой {target_base} штук.\n" +
|
||||||
|
f"Остатки показывают, сколько конфет не поместилось в полные коробки на каждом этапе.",
|
||||||
visual,
|
visual,
|
||||||
f"{'-' if is_negative else ''}{result_number}₍{target_base}₎"
|
f"{'-' if is_negative else ''}{result_number}₍{target_base}₎"
|
||||||
)
|
)
|
||||||
@@ -240,10 +272,12 @@ class StepByStepSolver:
|
|||||||
"""
|
"""
|
||||||
steps = []
|
steps = []
|
||||||
|
|
||||||
# Шаг 1: Исходные данные
|
# Шаг 1: Условие задачи
|
||||||
step1 = Step(
|
step1 = Step(
|
||||||
"Условие задачи",
|
"Условие задачи",
|
||||||
f"Необходимо сложить два числа в {self.get_system_name()} ({self.base}-ричной) системе счисления",
|
f"Необходимо сложить два числа в {self.get_system_name()} ({self.base}-ричной) системе счисления.\n" +
|
||||||
|
f"Принцип такой же, как в десятичной системе, но \"переполнение\" происходит при {self.base}, а не при 10!\n" +
|
||||||
|
f"Пример: если в десятичной 9+1=10 (переносим 1), то в двоичной 1+1=10₍₂₎ (тоже переносим 1).",
|
||||||
f"{num1}₍{self.base}₎ + {num2}₍{self.base}₎ = ?",
|
f"{num1}₍{self.base}₎ + {num2}₍{self.base}₎ = ?",
|
||||||
""
|
""
|
||||||
)
|
)
|
||||||
@@ -310,8 +344,11 @@ class StepByStepSolver:
|
|||||||
|
|
||||||
step3 = Step(
|
step3 = Step(
|
||||||
"Сложение в столбик",
|
"Сложение в столбик",
|
||||||
f"Складываем числа справа налево, учитывая переносы. " +
|
f"Складываем числа справа налево, учитывая переносы.\n" +
|
||||||
f"При сумме ≥ {self.base} делим на {self.base}: остаток - результат, частное - перенос",
|
f"ПРАВИЛО: Если сумма ≥ {self.base}, то делим на {self.base}:\n" +
|
||||||
|
f" • Остаток от деления → записываем в результат\n" +
|
||||||
|
f" • Частное → переносим в следующий разряд\n" +
|
||||||
|
f"Например: если {self.base-1} + 1 = {self.base}, пишем 0 и переносим 1 (как 9+1=10 в десятичной).",
|
||||||
visual,
|
visual,
|
||||||
f"{result_str}₍{self.base}₎"
|
f"{result_str}₍{self.base}₎"
|
||||||
)
|
)
|
||||||
@@ -348,10 +385,13 @@ class StepByStepSolver:
|
|||||||
"""
|
"""
|
||||||
steps = []
|
steps = []
|
||||||
|
|
||||||
# Шаг 1: Исходные данные
|
# Шаг 1: Условие задачи
|
||||||
step1 = Step(
|
step1 = Step(
|
||||||
"Условие задачи",
|
"Условие задачи",
|
||||||
f"Необходимо вычесть два числа в {self.get_system_name()} ({self.base}-ричной) системе счисления",
|
f"Необходимо вычесть два числа в {self.get_system_name()} ({self.base}-ричной) системе счисления.\n" +
|
||||||
|
f"Вычитание работает как в десятичной, но занимаем не 10, а {self.base}.\n" +
|
||||||
|
f"Например: в десятичной при 3-5 занимаем 10, получается 13-5=8.\n" +
|
||||||
|
f"В {self.base}-ричной системе занимаем {self.base} из следующего разряда.",
|
||||||
f"{num1}₍{self.base}₎ - {num2}₍{self.base}₎ = ?",
|
f"{num1}₍{self.base}₎ - {num2}₍{self.base}₎ = ?",
|
||||||
""
|
""
|
||||||
)
|
)
|
||||||
@@ -434,8 +474,12 @@ class StepByStepSolver:
|
|||||||
|
|
||||||
step3 = Step(
|
step3 = Step(
|
||||||
"Вычитание в столбик",
|
"Вычитание в столбик",
|
||||||
f"Вычитаем числа справа налево. " +
|
f"Вычитаем числа справа налево.\n" +
|
||||||
f"Если цифра уменьшаемого меньше вычитаемого, занимаем {self.base} из следующего разряда",
|
f"ПРАВИЛО ЗАИМСТВОВАНИЯ:\n" +
|
||||||
|
f" • Если верхняя цифра < нижней, занимаем {self.base} из следующего разряда\n" +
|
||||||
|
f" • К верхней цифре прибавляем {self.base}, вычитаем нижнюю\n" +
|
||||||
|
f" • Из следующего разряда вычитаем 1 (это \"долг\")\n" +
|
||||||
|
f"Это как занять 10₽ у друга, чтобы хватило на покупку!",
|
||||||
visual,
|
visual,
|
||||||
f"{result_str}₍{self.base}₎"
|
f"{result_str}₍{self.base}₎"
|
||||||
)
|
)
|
||||||
@@ -473,7 +517,13 @@ class StepByStepSolver:
|
|||||||
# Шаг 1: Исходные данные
|
# Шаг 1: Исходные данные
|
||||||
step1 = Step(
|
step1 = Step(
|
||||||
"Условие задачи",
|
"Условие задачи",
|
||||||
f"Необходимо умножить два числа в {self.get_system_name()} ({self.base}-ричной) системе счисления",
|
f"Необходимо умножить два числа в {self.get_system_name()} ({self.base}-ричной) системе счисления.\n" +
|
||||||
|
f"\nСПОСОБ РЕШЕНИЯ:\n" +
|
||||||
|
f"Умножение напрямую в {self.base}-ричной системе сложное, поэтому используем \"переводчика\":\n" +
|
||||||
|
f" 1. Переводим оба числа в привычную десятичную систему\n" +
|
||||||
|
f" 2. Умножаем в десятичной системе (это мы умеем!)\n" +
|
||||||
|
f" 3. Переводим результат обратно в {self.base}-ричную систему\n" +
|
||||||
|
f"Это как перевести иностранный текст на русский, решить задачу и перевести ответ обратно.",
|
||||||
f"{num1}₍{self.base}₎ × {num2}₍{self.base}₎ = ?",
|
f"{num1}₍{self.base}₎ × {num2}₍{self.base}₎ = ?",
|
||||||
""
|
""
|
||||||
)
|
)
|
||||||
@@ -491,37 +541,50 @@ class StepByStepSolver:
|
|||||||
result_str = self.from_decimal(result_dec)
|
result_str = self.from_decimal(result_dec)
|
||||||
|
|
||||||
step2 = Step(
|
step2 = Step(
|
||||||
"Преобразование в десятичную систему",
|
"Шаг 1: Преобразование в десятичную систему",
|
||||||
"Переводим оба числа в десятичную систему для проверки",
|
f"Переводим множители из {self.base}-ричной в десятичную систему.\n" +
|
||||||
|
f"Используем метод разложения по разрядам (см. примеры выше).",
|
||||||
f"{num1}₍{self.base}₎ = {dec1}₍₁₀₎\n" +
|
f"{num1}₍{self.base}₎ = {dec1}₍₁₀₎\n" +
|
||||||
f"{num2}₍{self.base}₎ = {dec2}₍₁₀₎",
|
f"{num2}₍{self.base}₎ = {dec2}₍₁₀₎\n\n" +
|
||||||
""
|
f"Теперь работаем с привычными десятичными числами!",
|
||||||
|
f"Множители: {dec1} и {dec2}"
|
||||||
)
|
)
|
||||||
steps.append(step2)
|
steps.append(step2)
|
||||||
|
|
||||||
# Шаг 3: Умножение в десятичной системе
|
# Шаг 3: Умножение в десятичной системе
|
||||||
step3 = Step(
|
step3 = Step(
|
||||||
"Умножение в десятичной системе",
|
"Шаг 2: Умножение в десятичной системе",
|
||||||
"Перемножаем числа в десятичной системе",
|
f"Перемножаем числа обычным способом (как учили в школе).\n" +
|
||||||
f"{dec1} × {dec2} = {result_dec}",
|
f"Это самая простая часть - обычное умножение!",
|
||||||
|
f"{dec1} × {dec2} = {result_dec}\n\n" +
|
||||||
|
f"Получили результат в десятичной системе: {result_dec}",
|
||||||
f"{result_dec}₍₁₀₎"
|
f"{result_dec}₍₁₀₎"
|
||||||
)
|
)
|
||||||
steps.append(step3)
|
steps.append(step3)
|
||||||
|
|
||||||
# Шаг 4: Обратное преобразование
|
# Шаг 4: Обратное преобразование
|
||||||
step4 = Step(
|
step4 = Step(
|
||||||
f"Перевод результата в {self.base}-ричную систему",
|
f"Шаг 3: Перевод результата в {self.base}-ричную систему",
|
||||||
f"Переводим результат обратно в {self.base}-ричную систему",
|
f"Переводим полученный результат обратно в {self.base}-ричную систему.\n" +
|
||||||
f"{result_dec}₍₁₀₎ = {result_str}₍{self.base}₎",
|
f"Используем метод деления с остатком (см. примеры выше).",
|
||||||
|
f"{result_dec}₍₁₀₎ = {result_str}₍{self.base}₎\n\n" +
|
||||||
|
f"Вернули ответ в исходную систему счисления!",
|
||||||
f"{result_str}₍{self.base}₎"
|
f"{result_str}₍{self.base}₎"
|
||||||
)
|
)
|
||||||
steps.append(step4)
|
steps.append(step4)
|
||||||
|
|
||||||
# Шаг 5: Проверка
|
# Шаг 5: Проверка
|
||||||
step5 = Step(
|
step5 = Step(
|
||||||
"Итоговый результат",
|
"Итоговый результат и проверка",
|
||||||
f"Результат умножения {num1}₍{self.base}₎ × {num2}₍{self.base}₎",
|
f"Проверяем логику решения:\n" +
|
||||||
f"{num1}₍{self.base}₎ × {num2}₍{self.base}₎ = {result_str}₍{self.base}₎\nПроверка: {dec1} × {dec2} = {result_dec}",
|
f" • Исходная задача: {num1}₍{self.base}₎ × {num2}₍{self.base}₎\n" +
|
||||||
|
f" • Перевели в десятичную: {dec1} × {dec2}\n" +
|
||||||
|
f" • Получили результат: {result_dec}\n" +
|
||||||
|
f" • Вернули в {self.base}-ричную: {result_str}₍{self.base}₎",
|
||||||
|
f"┌─────────────────────────────────┐\n" +
|
||||||
|
f"│ {num1}₍{self.base}₎ × {num2}₍{self.base}₎ = {result_str}₍{self.base}₎ │\n" +
|
||||||
|
f"└─────────────────────────────────┘\n" +
|
||||||
|
f"Проверка: {dec1} × {dec2} = {result_dec}₍₁₀₎ = {result_str}₍{self.base}₎",
|
||||||
f"✓ Ответ: {result_str}₍{self.base}₎"
|
f"✓ Ответ: {result_str}₍{self.base}₎"
|
||||||
)
|
)
|
||||||
steps.append(step5)
|
steps.append(step5)
|
||||||
@@ -544,7 +607,13 @@ class StepByStepSolver:
|
|||||||
# Шаг 1: Исходные данные
|
# Шаг 1: Исходные данные
|
||||||
step1 = Step(
|
step1 = Step(
|
||||||
"Условие задачи",
|
"Условие задачи",
|
||||||
f"Необходимо разделить два числа в {self.get_system_name()} ({self.base}-ричной) системе счисления",
|
f"Необходимо разделить два числа в {self.get_system_name()} ({self.base}-ричной) системе счисления.\n" +
|
||||||
|
f"\nСПОСОБ РЕШЕНИЯ:\n" +
|
||||||
|
f"Деление в {self.base}-ричной системе очень трудоёмкое, поэтому используем метод \"переводчика\":\n" +
|
||||||
|
f" 1. Переводим делимое и делитель в десятичную систему\n" +
|
||||||
|
f" 2. Делим в десятичной системе (получаем частное и остаток)\n" +
|
||||||
|
f" 3. Переводим частное и остаток обратно в {self.base}-ричную систему\n" +
|
||||||
|
f"Проще решить на \"родном языке\" математики - в десятичной системе!",
|
||||||
f"{num1}₍{self.base}₎ ÷ {num2}₍{self.base}₎ = ?",
|
f"{num1}₍{self.base}₎ ÷ {num2}₍{self.base}₎ = ?",
|
||||||
""
|
""
|
||||||
)
|
)
|
||||||
@@ -569,11 +638,13 @@ class StepByStepSolver:
|
|||||||
|
|
||||||
# Шаг 2: Преобразование в десятичную систему
|
# Шаг 2: Преобразование в десятичную систему
|
||||||
step2 = Step(
|
step2 = Step(
|
||||||
"Преобразование в десятичную систему",
|
"Шаг 1: Преобразование в десятичную систему",
|
||||||
"Переводим оба числа в десятичную систему",
|
f"Переводим делимое и делитель из {self.base}-ричной в десятичную систему.\n" +
|
||||||
f"{num1}₍{self.base}₎ = {dec1}₍₁₀₎\n" +
|
f"Используем знакомый метод разложения по разрядам.",
|
||||||
f"{num2}₍{self.base}₎ = {dec2}₍₁₀₎",
|
f"Делимое: {num1}₍{self.base}₎ = {dec1}₍₁₀₎\n" +
|
||||||
""
|
f"Делитель: {num2}₍{self.base}₎ = {dec2}₍₁₀₎\n\n" +
|
||||||
|
f"Теперь задача выглядит просто: {dec1} ÷ {dec2}",
|
||||||
|
f"Числа в десятичной: {dec1} ÷ {dec2}"
|
||||||
)
|
)
|
||||||
steps.append(step2)
|
steps.append(step2)
|
||||||
|
|
||||||
@@ -582,9 +653,14 @@ class StepByStepSolver:
|
|||||||
remainder = dec1 % dec2
|
remainder = dec1 % dec2
|
||||||
|
|
||||||
step3 = Step(
|
step3 = Step(
|
||||||
"Деление в десятичной системе",
|
"Шаг 2: Деление в десятичной системе",
|
||||||
"Выполняем целочисленное деление в десятичной системе",
|
f"Выполняем целочисленное деление (деление нацело).\n" +
|
||||||
f"{dec1} ÷ {dec2} = {quotient} (остаток {remainder})",
|
f"\nЧТО ПОЛУЧАЕМ:\n" +
|
||||||
|
f" • Частное (сколько раз {dec2} помещается в {dec1})\n" +
|
||||||
|
f" • Остаток (что осталось после деления)\n" +
|
||||||
|
f"\nПример: 17 ÷ 5 = 3 (остаток 2), потому что 5×3=15, а 17-15=2",
|
||||||
|
f"{dec1} ÷ {dec2} = {quotient} (остаток {remainder})\n\n" +
|
||||||
|
f"Проверка: {dec2} × {quotient} + {remainder} = {dec2 * quotient} + {remainder} = {dec1} ✓",
|
||||||
f"Частное: {quotient}₍₁₀₎, Остаток: {remainder}₍₁₀₎"
|
f"Частное: {quotient}₍₁₀₎, Остаток: {remainder}₍₁₀₎"
|
||||||
)
|
)
|
||||||
steps.append(step3)
|
steps.append(step3)
|
||||||
@@ -594,10 +670,12 @@ class StepByStepSolver:
|
|||||||
remainder_str = self.from_decimal(remainder) if remainder != 0 else "0"
|
remainder_str = self.from_decimal(remainder) if remainder != 0 else "0"
|
||||||
|
|
||||||
step4 = Step(
|
step4 = Step(
|
||||||
f"Перевод результата в {self.base}-ричную систему",
|
f"Шаг 3: Перевод результата в {self.base}-ричную систему",
|
||||||
f"Переводим частное и остаток обратно в {self.base}-ричную систему",
|
f"Переводим частное и остаток обратно в {self.base}-ричную систему.\n" +
|
||||||
f"Частное: {quotient}₍₁₀₎ = {quotient_str}₍{self.base}₎\n" +
|
f"Используем метод деления с остатком для перевода.",
|
||||||
f"Остаток: {remainder}₍₁₀₎ = {remainder_str}₍{self.base}₎",
|
f"Частное: {quotient}₍₁₀₎ → {quotient_str}₍{self.base}₎\n" +
|
||||||
|
f"Остаток: {remainder}₍₁₀₎ → {remainder_str}₍{self.base}₎\n\n" +
|
||||||
|
f"Вернули ответ в исходную систему счисления!",
|
||||||
f"{quotient_str}₍{self.base}₎ (остаток {remainder_str}₍{self.base}₎)"
|
f"{quotient_str}₍{self.base}₎ (остаток {remainder_str}₍{self.base}₎)"
|
||||||
)
|
)
|
||||||
steps.append(step4)
|
steps.append(step4)
|
||||||
@@ -605,11 +683,18 @@ class StepByStepSolver:
|
|||||||
# Шаг 5: Проверка
|
# Шаг 5: Проверка
|
||||||
check_result = dec2 * quotient + remainder
|
check_result = dec2 * quotient + remainder
|
||||||
step5 = Step(
|
step5 = Step(
|
||||||
"Проверка результата",
|
"Итоговый результат и проверка",
|
||||||
"Проверяем: делитель × частное + остаток = делимое",
|
f"Проверяем правильность по формуле:\n" +
|
||||||
f"{dec2} × {quotient} + {remainder} = {check_result}\n" +
|
f" Делимое = Делитель × Частное + Остаток\n" +
|
||||||
f"{num2}₍{self.base}₎ × {quotient_str}₍{self.base}₎ + {remainder_str}₍{self.base}₎ = {num1}₍{self.base}₎",
|
f"Это основное правило деления с остатком!",
|
||||||
f"✓ Ответ: {quotient_str}₍{self.base}₎ (остаток {remainder_str}₍{self.base}₎)" if remainder != 0 else f"✓ Ответ: {quotient_str}₍{self.base}₎"
|
f"┌──────────────────────────────────────┐\n" +
|
||||||
|
f"│ {num1}₍{self.base}₎ ÷ {num2}₍{self.base}₎ = {quotient_str}₍{self.base}₎" +
|
||||||
|
(f" (ост. {remainder_str}₍{self.base}₎)" if remainder != 0 else "") + " │\n" +
|
||||||
|
f"└──────────────────────────────────────┘\n\n" +
|
||||||
|
f"Проверка в десятичной: {dec2} × {quotient} + {remainder} = {check_result} ✓\n" +
|
||||||
|
f"Проверка в {self.base}-ричной: {num2}₍{self.base}₎ × {quotient_str}₍{self.base}₎" +
|
||||||
|
(f" + {remainder_str}₍{self.base}₎" if remainder != 0 else "") + f" = {num1}₍{self.base}₎ ✓",
|
||||||
|
f"✓ Ответ: {quotient_str}₍{self.base}₎" + (f" (остаток {remainder_str}₍{self.base}₎)" if remainder != 0 else "")
|
||||||
)
|
)
|
||||||
steps.append(step5)
|
steps.append(step5)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user