Бесплатный урок с нашим репетитором!

Узнать подробнее

Новая Школа - онлайн-школа подготовки к ЕГЭ
При поддержке
Посмотреть все вопросы нейросети
Бесплатный пробный урок с репетитором

Узнай больше про репетиторов Новой Школы и запишись на бесплатный пробный урок. Мы проверим твой уровень знаний и составим план обучения по любому предмету и классу

Вопрос от Анонимного юзера 30 сентября 2025 19:43

Составь программу и начерти блок-схему решения квадратного уравнения в питон

Ответ нейросети

30 сентября 2025 19:43

Ниже полноte подробное решение задачи: программа на Python для решения квадратного уравнения ax^2 + bx + c = 0, а также блок-схема решения (текстовая и в формате Graphviz DOT).

Цель: понять принцип и получить рабочий код.

  1. Пошаговый разбор алгоритма
  • Введение: рассматриваем уравнение ax^2 + bx + c = 0.
  • Шаг 1. Проверяем коэффициент a:
    • Если a ≠ 0, уравнение квадратичное. Вычисляем дискриминант Δ = b^2 − 4ac.
    • Если a = 0, это линейное уравнение bx + c = 0.
  • Шаг 2. Если квадратичное (a ≠ 0):
    • Если Δ > 0: два действительных корня x1 = (-b − √Δ) / (2a) и x2 = (-b + √Δ) / (2a).
    • Если Δ = 0: один корень x = -b / (2a).
    • Если Δ < 0: корни комплексные: x1, x2 = (-b ± √Δ) / (2a) (√Δ берём как комплексное число).
  • Шаг 3. Если линейное (a = 0, b ≠ 0): один корень x = -c / b.
  • Шаг 4. Если линейное и b = 0:
    • если c = 0: бесконечно много решений (0 = 0);
    • иначе: решений нет.

Программа на Python (для чистоты и понятности, с обработкой комплексных корней):

import cmath

def solve_quadratic(a, b, c):
    tol = 1e-12
    # Если a близко к нулю, линейное или degenerate
    if abs(a) < tol:
        if abs(b) < tol:
            if abs(c) < tol:
                return {"type": "infinite"}      # 0x^2 + 0x + 0 = 0 -> любое x
            else:
                return {"type": "none"}          # противоречие
        else:
            x = -c / b
            return {"type": "linear", "roots": [x]}
    # Квадратное уравнение
    delta = b * b - 4 * a * c
    sqrt_delta = cmath.sqrt(delta)
    x1 = (-b - sqrt_delta) / (2 * a)
    x2 = (-b + sqrt_delta) / (2 * a)
    if abs(delta) < tol:
        return {"type": "double", "roots": [x1]}
    else:
        return {"type": "quadratic", "roots": [x1, x2]}

def fmt_root(x):
    # Красиво печатать комплексные корни
    if isinstance(x, complex):
        if abs(x.imag) < 1e-9:
            return f"{x.real:.6f}"
        else:
            sign = '+' if x.imag >= 0 else '-'
            return f"{x.real:.6f} {sign} {abs(x.imag):.6f}i"
    else:
        return f"{x:.6f}"

if __name__ == "__main__":
    try:
        a, b, c = map(float, input("Введите a, b и c через пробел: ").split())
    except Exception:
        print("Неверный ввод.")
        exit(1)

    res = solve_quadratic(a, b, c)
    if res["type"] == "infinite":
        print("Бесконечное множество решений (a=0, b=0, c=0).")
    elif res["type"] == "none":
        print("Уравнение не имеет решений.")
    elif res["type"] == "linear":
        print(f"Единственный корень: x = {fmt_root(res['roots'][0])}")
    elif res["type"] == "double":
        print(f"Двойной корень: x = {fmt_root(res['roots'][0])}")
    elif res["type"] == "quadratic":
        x1, x2 = res["roots"]
        print(f"Корни: x1 = {fmt_root(x1)}, x2 = {fmt_root(x2)}")
  1. Блок-схема решения (текстовая версия)
  • Start
  • Ввод a, b, c
  • Проверка: a ≠ 0?
    • Да:
      • Δ = b^2 − 4ac
      • Δ > 0?
        • Да: x1 = (-b − √Δ)/(2a), x2 = (-b + √Δ)/(2a); вывести x1, x2
        • Нет: Δ = 0?
          • Да: x = -b/(2a); вывести x
          • Нет: вывести комплексные корни x1, x2
    • Нет (a = 0):
      • b ≠ 0?
        • Да: x = -c/b; вывести x
        • Нет (b = 0):
          • c = 0?
            • Да: вывести "любое x" (бесконечное множество решений)
            • Нет: вывести "нет решений"
  • End

ASCII-версия блок-схемы (упрощённая): Start | Input a, b, c | [a != 0?] /
Yes No |
Δ = b^2-4ac линейное | (a=0) Δ > 0? | [b != 0?] / \ | /
Yes No Yes No | | | | x1,x2 Δ=0? x=-c/b x = -c/b нет решений / бесконечность | | | | Output x Output Output | | | | End End End End

  1. Блок-схема в формате Graphviz DOT (для визуализации в Graphviz) Диаграмма описывает тот же алгоритм более формально.

digraph QuadraticFlow { node [shape=box]; Start -> Input; Input -> Acheck [label="a != 0?"]; Acheck -> Quad [label="Yes"]; Acheck -> Lin [label="No"];

// Квадратное Quad -> Delta [label="Δ = b^2 - 4ac"]; Delta -> Dcheck [label="Δ > 0?"]; Dcheck -> Roots2 [label="Yes"]; Roots2 -> Out [label="print x1, x2"]; Dcheck -> D0 [label="No"]; D0 -> D0eq [label="Δ = 0?"]; D0eq -> OneRoot [label="Yes"]; OneRoot -> Out [label="print x"]; D0eq -> Complexes [label="No"]; Complexes -> Out [label="print x1, x2 (complex)"];

// Линейное Lin -> LinDelta [label="b != 0?"]; LinDelta -> LinRoot [label="Yes"]; LinRoot -> Out [label="print x"]; LinDelta -> LinNo [label="No"]; LinNo -> InfiniteOrNone [label="c=0?"]; InfiniteOrNone -> Out [label="print бесконечно/нет решений"];

// Концовка Out -> End; End -> [shape=point]; }

Чтобы сгенерировать изображение, сохраните текст DOT в файл, например, quadratic_flow.dot, и выполните:

  • Graphviz: dot -Tpng quadratic_flow.dot -o quadratic_flow.png
  1. Как использовать на практике
  • Введите коэффициенты a, b, c через пробел.
  • Программа распознает случаи a = 0 (линейное уравнение) и выдаёт корни или состояние («нет решений», «бесконечность»).
  • При Δ < 0 корни будут выведены как комплексные числа.
  • Корни выводятся с аккуратным форматированием (появляется вещественная часть или комплексное число).

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

Задай свой вопрос

Напиши любую задачу или вопрос, а нейросеть её решит

Похожие вопросы 15

Бесплатно Мобильное приложение ГДЗ
Мобильное приложение ГДЗ

Задавай вопросы искуcственному интеллекту текстом или фотографиями в приложении на iPhone или Android

qr-codegoogle-playapp-store

Саша — ассистент в телеграмме

составь программу и начерти блок-схему решения квадратного уравнения в питон
Ниже полноte подробное решение задачи: программа на Python для решения квадратного уравнения ax^2 + bx + c = 0, а также блок-схема решения (текстовая и в формате Graphviz DOT). Цель: понять принцип и получить рабочий код. 1) Пошаговый разбор алгоритма - Введение: рассматриваем уравнение ax^2 + bx + c = 0. - Шаг 1. Проверяем коэффициент a: - Если a ≠ 0, уравнение квадратичное. Вычисляем дискриминант Δ = b^2 − 4ac. - Если a = 0, это линейное уравнение bx + c = 0. - Шаг 2. Если квадратичное (a ≠ 0): - Если Δ > 0: два действительных корня x1 = (-b − √Δ) / (2a) и x2 = (-b + √Δ) / (2a). - Если Δ = 0: один корень x = -b / (2a). - Если Δ < 0: корни комплексные: x1, x2 = (-b ± √Δ) / (2a) (√Δ берём как комплексное число). - Шаг 3. Если линейное (a = 0, b ≠ 0): один корень x = -c / b. - Шаг 4. Если линейное и b = 0: - если c = 0: бесконечно много решений (0 = 0); - иначе: решений нет. Программа на Python (для чистоты и понятности, с обработкой комплексных корней): ```python import cmath def solve_quadratic(a, b, c): tol = 1e-12 # Если a близко к нулю, линейное или degenerate if abs(a) < tol: if abs(b) < tol: if abs(c) < tol: return {"type": "infinite"} # 0x^2 + 0x + 0 = 0 -> любое x else: return {"type": "none"} # противоречие else: x = -c / b return {"type": "linear", "roots": [x]} # Квадратное уравнение delta = b * b - 4 * a * c sqrt_delta = cmath.sqrt(delta) x1 = (-b - sqrt_delta) / (2 * a) x2 = (-b + sqrt_delta) / (2 * a) if abs(delta) < tol: return {"type": "double", "roots": [x1]} else: return {"type": "quadratic", "roots": [x1, x2]} def fmt_root(x): # Красиво печатать комплексные корни if isinstance(x, complex): if abs(x.imag) < 1e-9: return f"{x.real:.6f}" else: sign = '+' if x.imag >= 0 else '-' return f"{x.real:.6f} {sign} {abs(x.imag):.6f}i" else: return f"{x:.6f}" if __name__ == "__main__": try: a, b, c = map(float, input("Введите a, b и c через пробел: ").split()) except Exception: print("Неверный ввод.") exit(1) res = solve_quadratic(a, b, c) if res["type"] == "infinite": print("Бесконечное множество решений (a=0, b=0, c=0).") elif res["type"] == "none": print("Уравнение не имеет решений.") elif res["type"] == "linear": print(f"Единственный корень: x = {fmt_root(res['roots'][0])}") elif res["type"] == "double": print(f"Двойной корень: x = {fmt_root(res['roots'][0])}") elif res["type"] == "quadratic": x1, x2 = res["roots"] print(f"Корни: x1 = {fmt_root(x1)}, x2 = {fmt_root(x2)}") ``` 2) Блок-схема решения (текстовая версия) - Start - Ввод a, b, c - Проверка: a ≠ 0? - Да: - Δ = b^2 − 4ac - Δ > 0? - Да: x1 = (-b − √Δ)/(2a), x2 = (-b + √Δ)/(2a); вывести x1, x2 - Нет: Δ = 0? - Да: x = -b/(2a); вывести x - Нет: вывести комплексные корни x1, x2 - Нет (a = 0): - b ≠ 0? - Да: x = -c/b; вывести x - Нет (b = 0): - c = 0? - Да: вывести "любое x" (бесконечное множество решений) - Нет: вывести "нет решений" - End ASCII-версия блок-схемы (упрощённая): Start | Input a, b, c | [a != 0?] / \ Yes No | \ Δ = b^2-4ac линейное | (a=0) Δ > 0? | [b != 0?] / \ | / \ Yes No Yes No | | | | x1,x2 Δ=0? x=-c/b x = -c/b нет решений / бесконечность | | | | Output x Output Output | | | | End End End End 3) Блок-схема в формате Graphviz DOT (для визуализации в Graphviz) Диаграмма описывает тот же алгоритм более формально. digraph QuadraticFlow { node [shape=box]; Start -> Input; Input -> Acheck [label="a != 0?"]; Acheck -> Quad [label="Yes"]; Acheck -> Lin [label="No"]; // Квадратное Quad -> Delta [label="Δ = b^2 - 4ac"]; Delta -> Dcheck [label="Δ > 0?"]; Dcheck -> Roots2 [label="Yes"]; Roots2 -> Out [label="print x1, x2"]; Dcheck -> D0 [label="No"]; D0 -> D0eq [label="Δ = 0?"]; D0eq -> OneRoot [label="Yes"]; OneRoot -> Out [label="print x"]; D0eq -> Complexes [label="No"]; Complexes -> Out [label="print x1, x2 (complex)"]; // Линейное Lin -> LinDelta [label="b != 0?"]; LinDelta -> LinRoot [label="Yes"]; LinRoot -> Out [label="print x"]; LinDelta -> LinNo [label="No"]; LinNo -> InfiniteOrNone [label="c=0?"]; InfiniteOrNone -> Out [label="print бесконечно/нет решений"]; // Концовка Out -> End; End -> [shape=point]; } Чтобы сгенерировать изображение, сохраните текст DOT в файл, например, quadratic_flow.dot, и выполните: - Graphviz: dot -Tpng quadratic_flow.dot -o quadratic_flow.png 4) Как использовать на практике - Введите коэффициенты a, b, c через пробел. - Программа распознает случаи a = 0 (линейное уравнение) и выдаёт корни или состояние («нет решений», «бесконечность»). - При Δ < 0 корни будут выведены как комплексные числа. - Корни выводятся с аккуратным форматированием (появляется вещественная часть или комплексное число). Если хочешь, могу адаптировать решение под конкретный класс (объяснения полегче/пошире, примеры с натуральными числами, без комплексных корней, и т. п.) или сделать интерфейс с вводом через диалоговое окно.