Составь программу и начерти блок-схему решения квадратного уравнения в питон
Ответ нейросети
30 сентября 2025 19:41
Ниже — подробная программа на Python для решения квадратного уравнения ax^2 + bx + c = 0, а также текстовая блок-схема решения. Задача рассчитана на понимание процесса и подходит для школьного уровня.
- Программа на Python
import cmath
def solve_quadratic(a, b, c): # Возвращает словарь с результатами решения if a == 0: # Это линейное уравнение bx + c = 0 if b == 0: if c == 0: return {"status": "infinite", "message": "Бесконечное множество решений."} else: return {"status": "none", "message": "Нет решений."} x = -c / b return {"status": "linear", "root": x}
# Квадратное уравнение: вычислим дискриминант
D = b * b - 4 * a * c
sqrtD = cmath.sqrt(D)
x1 = (-b + sqrtD) / (2 * a)
x2 = (-b - sqrtD) / (2 * a)
if D > 0:
return {"status": "two_roots", "x1": x1, "x2": x2, "D": D}
elif D == 0:
return {"status": "one_root", "x": x1, "D": D}
else: # D < 0
return {"status": "two_roots_complex", "x1": x1, "x2": x2, "D": D}
def main(): try: a, b, c = map(float, input("Введите a, b, c через пробел: ").split()) except ValueError: print("Ошибка ввода: введите три числа.") return
res = solve_quadratic(a, b, c)
status = res["status"]
if status == "infinite":
print("Уравнение тождественно истинно: бесконечное множество решений.")
elif status == "none":
print("Нет решений.")
elif status == "linear":
print("Линейное уравнение. x =", res["root"])
elif status == "two_roots":
print("Два действительных корня: x1 =", res["x1"], ", x2 =", res["x2"])
print("Дискриминант D =", res["D"])
elif status == "one_root":
print("Единственный корень: x =", res["x"])
print("Дискриминант D =", res["D"])
elif status == "two_roots_complex":
print("Два комплексных корня: x1 =", res["x1"], ", x2 =", res["x2"])
print("Дискриминант D =", res["D"])
else:
print("Необработанный статус:", status)
if name == "main": main()
Примеры ввода/вывода:
- Ввод: 1 -3 2 Вывод: Два действительных корня: x1 = (2+0j) , x2 = (1+0j); Дискриминант D = (1+0j)
- Ввод: 1 0 1 Вывод: Два комплексных корня: x1 = (0+1j) , x2 = (0-1j); Дискриминант D = (-4+0j)
- Ввод: 0 2 -8 Вывод: Линейное уравнение. x = 4.0
- Пошаговое объяснение алгоритма
- Шаг 1. Ввод коэффициентов
- Вводятся a, b, c для уравнения ax^2 + bx + c = 0.
- Шаг 2. Обработка частного случая a = 0
- Если a = 0, уравнение становится линейным bx + c = 0.
- Если b = 0 и c = 0 → тождественно истинно: бесконечно много решений.
- Если b = 0 и c ≠ 0 → противоречие: решений нет.
- Если b ≠ 0 → решение x = -c / b.
- Шаг 3. Квадратное уравнение (а ≠ 0)
- Вычисляется дискриминант D = b^2 - 4ac.
- Корни выражаются через квадратный корень дискриминанта:
- Если D > 0: x1 = (-b + sqrt(D)) / (2a), x2 = (-b - sqrt(D)) / (2a) — два разных действительных корня.
- Если D = 0: x = -b / (2a) — один корень (удовлетворяет удвоенному корню).
- Если D < 0: корни комплексные: x1 и x2 равны (-b ± sqrt(D)) / (2a), где sqrt берётся по комплексным числам.
- Шаг 4. Вывод результата
- В зависимости от ситуации выводятся корни или сообщение о бесконечном множестве решений/отсутствии решений.
- Текстовая блок-схема решения (для визуального понимания)
Start ↓ Ввод a, b, c ↓ Условие: a == 0? ├─ Да ──> Условие: b == 0? │ ├─ Да ──> Условие: c == 0? │ │ ├─ Да ──> Бесконечно много решений │ │ └─ Нет ──> Нет решений │ └─ Нет ──> x = -c/b; Вывести x; Завершение └─ Нет ──> D = b^2 - 4ac ↓ Условие: D > 0? ├─ Да ──> x1 = (-b + sqrt(D))/(2a) x2 = (-b - sqrt(D))/(2a) Вывести x1, x2; Завершение ├─ Нет ──> Условие: D == 0? │ ├─ Да ──> x = -b/(2a); Вывести x; Завершение │ └─ Нет ──> x1, x2 = (-b ± sqrt(D))/(2a) (комплексные) │ Вывести x1, x2; Завершение └─ Нет End
- Примечания и советы
- В примерах дискриминант может быть отрицательным; в этом случае действительные корни отсутствуют, зато есть два комплексных корня. В приведённом коде используется модуль cmath для вычисления квадратного корня, что позволяет корректно получить комплексные корни.
- Если нужно работать только с действительными корнями, можно заменить cmath на math и обрабатывать D < 0 как отсутствие решений.
- Ввод можно адаптировать под графический интерфейс или форму: запросить у пользователя три коэффициента и вывести результат красиво (например, с округлением до нужной точности).
Если хочешь, могу адаптировать программу под конкретный формат ввода (например, считывать коэффициенты из файла или выводить ответ в более компактной форме), или сделать подробную визуализацию блок-схемы в виде изображения (например, Mermaid или PlantUML).
Понравился ответ?
Задай свой вопрос
Напиши любую задачу или вопрос, а нейросеть её решит



