Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с задачей

Екатерина Ученик (85), закрыт 11 месяцев назад
Проверить истинность высказывания: "Квадратное уравнение A•x2 + B•x + C = 0 с данными коэффициентами A, B, C имеет вещественные корни".
Лучший ответ
Ilya Hämäläinen Мастер (1276) 12 месяцев назад
 def has_real_roots(A, B, C): 
D = B**2 - 4 * A * C
return D >= 0

A = float(input("Введите коэффициент A: "))
B = float(input("Введите коэффициент B: "))
C = float(input("Введите коэффициент C: "))

if has_real_roots(A, B, C):
print("Квадратное уравнение имеет вещественные корни.")
else:
print("Квадратное уравнение имеет комплексные корни.")
D = B^2 - 4 * A * C
Остальные ответы
Ксения Райт Гений (85958) 12 месяцев назад
Одна из самых неприятных вещей в алгоритмических языках - это сравнение вещественных чисел, которое может работать некорректно. Например, если число x=1.999999999999999999999 объявить как вещественное восьмибайтного типа float, то оно для компьютера равно двум, хотя на самом деле меньше.
В Пайтоне есть специальный тип fractions.Fraction, который помогает избежать такого рода ошибок при сравнении вещественных чисел, представляемых в компьютере с ограниченной точностью. Поэтому я бы лучше как-нибудь так сделала:
 import fractions 
A, B, C = map(fractions.Fraction, input('A B C: ').split())
if A:
D = B * B - 4 * A * C
if D > 0: print('Два вещественных корня')
else: print('Нет вещественных корней' if D\
else 'Один вещественный корень')
else: print('Уравнение не квадратное!')
В случае А=0 это уравнение хоть и можно считать квадратным, так как неизвестный икс в нём возводится в квадрат, только оно тогда вырожденное.
В случае А≠0 и B² = 4AC у уравнения нет вещественных корней (корней в буквальном смысле, то есть как во множественном числе!), а есть лишь один единственный вещественный корень кратности 2. Это тоже надо учитывать!
Похожие вопросы