Новая Школа - онлайн-школа подготовки к ЕГЭ
Задача Задача №3575142
А
Аноним
01 марта 2026 08:38 · публичный вопрос
А
Аноним

Напиши ответ программу для той задачи

Ответ нейросети
01 марта 2026 08:38

Похоже, вы хотите получить программу, которая будет выдавать подробное пошаговое решение для заданной задачи. Ниже приведён готовый шаблон на Python, который может решать три распространённых типа задач средней школы: линейное уравнение, квадратное уравнение и систему из двух уравнений. Он формирует понятные шаги и объяснения.

Код (Python):

import math
from typing import Dict, Any

def format_num(n):
    # Форматирование чисел: если целое — без десятых знаков
    if isinstance(n, (int,)):
        return str(n)
    if isinstance(n, float):
        if abs(n - round(n)) < 1e-9:
            return str(int(round(n)))
        else:
            return str(round(n, 6)).rstrip('0').rstrip('.')
    return str(n)

def solve_linear(task: Dict[str, Any]) -> str:
    # task: {'type':'linear', 'a': <число>, 'b': <число>, 'c': <число>}
    a = task.get('a')
    b = task.get('b')
    c = task.get('c')
    steps = []
    steps.append(f"Решение линейного уравнения: {a}x + {b} = {c}")

    if a == 0:
        if b == c:
            steps.append("Так как a = 0 и b = c, уравнение тождественно истинно. Бесконечно много решений.")
            return "\n".join(steps)
        else:
            steps.append("Так как a = 0, а b ≠ c, решения нет.")
            return "\n".join(steps)

    steps.append(f"Перепишем уравнение: {a}x = {c} − {b} = {format_num(c - b)}")
    x = (c - b) / a
    steps.append(f"Разделим обе части на {a}: x = ({c} − {b}) / {a} = {format_num(x)}")
    steps.append(f"Ответ: x = {format_num(x)}")
    return "\n".join(steps)

def solve_quadratic(task: Dict[str, Any]) -> str:
    # task: {'type':'quadratic', 'a': <число>, 'b': <число>, 'c': <число>}
    a = task.get('a')
    b = task.get('b')
    c = task.get('c')
    steps = []
    steps.append(f"Решение квадратного уравнения: {a}x^2 + {b}x + {c} = 0")

    if a == 0:
        # Сведение к линейному: bx + c = 0
        steps.append("Обратите внимание: a = 0, уравнение линейное.")
        linear_task = {'type':'linear', 'a': b, 'b': c, 'c': 0}
        return steps + [""] + solve_linear(linear_task).split("\n")

    D = b*b - 4*a*c
    steps.append(f"Дискриминант: D = b^2 - 4ac = {b}^2 - 4*{a}*{c} = {D}")

    if D < 0:
        steps.append("D < 0, вещественных корней нет. Есть комплексные корни.")
        real = complex(-b, math.sqrt(-D)) / (2*a)
        real2 = complex(-b, -math.sqrt(-D)) / (2*a)
        steps.append(f"Корни: x1 = {real}, x2 = {real2}")
        return "\n".join(steps)

    sqrtD = math.sqrt(D)
    x1 = (-b - sqrtD) / (2*a)
    x2 = (-b + sqrtD) / (2*a)

    steps.append(f"x1 = (-b - sqrt(D)) / (2a) = ({-b} - {sqrtD}) / ({2*a}) = {format_num(x1)}")
    steps.append(f"x2 = (-b + sqrt(D)) / (2a) = ({-b} + {sqrtD}) / ({2*a}) = {format_num(x2)}")
    if abs(x1 - x2) < 1e-12:
        steps.append(f"Корень кратности 2: x = {format_num(x1)}")
    else:
        steps.append(f"Ответы: x1 = {format_num(x1)}, x2 = {format_num(x2)}")
    return "\n".join(steps)

def solve_system(task: Dict[str, Any]) -> str:
    # task: {'type':'system',
    #        'eqs': [
    #            {'a':a1, 'b':b1, 'c':c1},
    #            {'a':a2, 'b':b2, 'c':c2}
    #        ]}
    eqs = task.get('eqs', [])
    if len(eqs) != 2:
        return "Система должна содержать две линейные уравнения."

    a1, b1, c1 = eqs[0].get('a'), eqs[0].get('b'), eqs[0].get('c')
    a2, b2, c2 = eqs[1].get('a'), eqs[1].get('b'), eqs[1].get('c')

    steps = []
    steps.append("Решение системы линейных уравнений:")
    steps.append(f"{a1}x + {b1}y = {c1}")
    steps.append(f"{a2}x + {b2}y = {c2}")

    D = a1*b2 - a2*b1
    Dx = c1*b2 - c2*b1
    Dy = a1*c2 - a2*c1

    steps.append(f"Детерминант D = a1*b2 − a2*b1 = {D}")
    if D == 0:
        steps.append("D = 0. Система имеет бесконечно много решений или несовместна.")
        # Проверим совместность
        if a1*c2 == a2*c1 and b1*c2 == b2*c1 and (a1*b2 - a2*b1) == 0:
            steps.append("Система совместна*: существует бесконечно много решений, т.к. второй коэффициент пропорционален первому.")
        else:
            steps.append("Система несовместна.")
        return "\n".join(steps)

    steps.append(f"Dx = c1*b2 − c2*b1 = {Dx}")
    steps.append(f"Dy = a1*c2 − a2*c1 = {Dy}")
    x = Dx / D
    y = Dy / D
    steps.append(f"x = Dx / D = {Dx} / {D} = {format_num(x)}")
    steps.append(f"y = Dy / D = {Dy} / {D} = {format_num(y)}")
    steps.append(f"Ответ: x = {format_num(x)}, y = {format_num(y)}")
    return "\n".join(steps)

def solve_problem(task: Dict[str, Any]) -> str:
    t = task.get('type')
    if t == 'linear':
        return solve_linear(task)
    if t == 'quadratic':
        return solve_quadratic(task)
    if t == 'system':
        return solve_system(task)
    return "Неизвестный тип задачи. Поддерживаются: linear, quadratic, system."

# Пример использования:
if __name__ == "__main__":
    # Пример 1: линейное уравнение
    task_linear = {'type': 'linear', 'a': 3, 'b': 5, 'c': 20}  # 3x + 5 = 20
    print("Пример линейного уравнения:")
    print(solve_problem(task_linear))
    print("\n" + "="*50 + "\n")

    # Пример 2: квадратное уравнение
    task_quad = {'type': 'quadratic', 'a': 1, 'b': -3, 'c': 2}  # x^2 - 3x + 2 = 0
    print("Пример квадратного уравнения:")
    print(solve_problem(task_quad))
    print("\n" + "="*50 + "\n")

    # Пример 3: система из двух уравнений
    task_system = {
        'type': 'system',
        'eqs': [
            {'a': 1, 'b': 1, 'c': 3},   # x + y = 3
            {'a': 2, 'b': -1, 'c': 1}  # 2x - y = 1
        ]
    }
    print("Пример решения системы:")
    print(solve_problem(task_system))

Как это работает:

  • В коде предусмотрено три типа задач: linear, quadratic, system.
  • Для линейного уравнения ax + b = c разбор идёт по шагам: перенос и деление.
  • Для квадратного uравнения ax^2 + bx + c = 0 вычисляется дискриминант D, корни по формуле, учитывая случаи D < 0 и D = 0.
  • Для системы двух линейных уравнений по методам Крамера (детерминанты D, Dx, Dy) находится решение, при D ≠ 0. При D = 0 даётся комментарий о совместности/несовместности.

Как использовать под ваши задачи:

  • Дайте задачу в виде структурированного ввода (словарь/JSON) с полем type и соответствующими параметрами, например:
    • Линейное: {'type':'linear', 'a': <число>, 'b': <число>, 'c': <число>} representing ax + b = c
    • Квадратное: {'type':'quadratic', 'a': <число>, 'b': <число>, 'c': <число>} representing ax^2 + bx + c = 0
    • Система: {'type':'system', 'eqs':[{'a':a1,'b':b1,'c':c1},{'a':a2,'b':b2,'c':c2}]}

Если у вас есть конкретная задача, пришлите её текст или структурированную форму ввода (например, как в примерах выше), и я подставлю точные значения в программу и выведу полный пошаговый разбор.