Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Задача № 12. Решить квадратное уравнениеФормулировка. Даны вещественные числа a, b и c, причем a отлично от 0. Решить квадратное уравнение ax 2 + bx + c = 0 или сообщить о том, что действительных решений нет. Решение. Из алгебры известно, что:
Квадратное уравнение ax2 + bx + c = 0, выражение D = b 2 – 4 ac – дискриминант: – если D > 0, имеет два решения: , ; – если D = 0, имеет единственное решение: ; – если D < 0, не имеет действительных решений. Следовательно, нам необходимо вычислить дискриминант (заведем для него вещественную переменную d типа real) и в зависимости от его значения организовать ветвления. Сначала нужно проверить, имеет ли уравнение действительные решения (для решений заведем переменные x1 и x2 типа real). Если да, и если дискриминант не равен нулю, то вычисляем оба решения по формулам, а если дискриминант равен нулю, то вычисляем единственное решение. Если же действительных решений нет, выводим текстовое сообщение об этом. Основной алгоритм можно проиллюстрировать следующей блок-схемой:
Три нерасшифрованных блока представляют собой стандартные операторы вывода. Разберем их подробнее: 1) При выводе двух корней выражение будет выглядеть следующим образом: x1:= (-b + sqrt(d)) / 2 * a; x2:= (-b - sqrt(d)) / 2 * a; writeln('x1 = ', x1:4:2, ', x2 = ', x2:4:2); При этом выводимое выражение будет выглядеть так: 'x1 = m, x2 = n', где синим цветом выделены однозначные текстовые константы, которые берутся из списка аргументов writeln, красным – вычисленные значения x1 и x2. Причем корни выведены в форматированном виде: число после первого двоеточия задает ширину поля вывода для переменной вместе с точкой (при нехватке поля она будет расширено программой), а число после второго двоеточия – количество выводимых дробных знаков (его при работе программы изменить нельзя); 2) При выводе одного корня – все то же самое, только выводится один корень: x1:= -(b / 2 * a); writeln('x = ', x1:4:2); 3) При отсутствии действительных корней выводим сообщение: writeln('No real solutions!'); В итоге внутренний условный оператор с телом включительно будет выглядеть так: if d <> 0 then begin x1:= (-b + sqrt(d)) / 2 * a; x2:= (-b - sqrt(d)) / 2 * a; writeln('x1 = ', x1:4:2, ', x2 = ', x2:4:2) end else begin x1:= -(b / 2 * a); writeln('x = ', x1:4:2) end; Код:
|