Алгоритмы разветвленной структуры
⇐ ПредыдущаяСтр 2 из 2 Алгоритмы разветвленной структуры применяются, когда в зависимости от некоторого условия необходимо выполнить либо одно, либо другое действие. В блок-схемах разветвленные алгоритмы изображаются так, как показано на рис. 1.10 - 1.11.
Рассмотрим несколько примеров построения алгоритмов разветвленной структуры. ПРИМЕР 1.4. Известны коэффициенты и с квадратного уравнения. Вычислить корни квадратного уравнения. Входные данные: a, b, c. Блок-схема представлена на рис. 1.5. ПРИМЕР 1.5. Составить программу нахождения действительных и комплексных корней квадратного уравнения. Можно выделить следующие этапы решения задачи: 1. Ввод коэффициентов квадратного уравнения a, b и c. 2. Вычисление дискриминанта d по формуле d = b2 - 4ас. 3. Проверка знака дискриминанта. Если d >= 0, то вычисление действительных корней по формуле 1.1 и вывод их на экран.
4. При отрицательном дискриминанте выводится сообщение о том, что действительных корней нет, и вычисляются комплексные корни.Комплексные числа записываются в виде a + ib (формула 1.2):
5. a - действительная часть комплексного числа, b - мнимая часть комплексного числа.У обоих комплексных корней действительные части одинаковые, а мнимые отличаются знаком. Поэтому можно в переменной x1 хранить действительную часть числа -b/2a, в переменной x2 - модуль мнимой части , а в качестве корней вывести x1+ix2 и x1-ix2. На рис. 1.12 изображена блок-схема решения задачи. Блок 1 предназначен для ввода коэффициентов квадратного уравнения. В блоке 2 осуществляется вычисление дискриминанта. Блок 3 осуществляет проверку знака дискриминанта, если дискриминант отрицателен, то корни комплексные, их расчет происходит в блоке 4 (действительная часть корня записывается в переменную x1, модуль мнимой - в переменную x2), а вывод - в блоке 5 (первый корень x1 + i x2, второй - x1- i x2). Если дискриминант положителен, то вычисляются действительные корни уравнения (блок 6) и выводятся на экран (блок 7).
ПРИМЕР 1.6. Заданы коэффициенты a, b и с биквадратного уравнения ах4 + bх2 + с = 0. Решить уравнение. Для решения биквадратного уравнения необходимо заменой y = x2 привести его к квадратному и решить это уравнение. Входные данные: a, b, c. Выходные данные: х1, х2, х3, х4. Блок-схема представлена на рис. 1.13. Алгоритм состоит из следующих этапов: 1. Вычисление дискриминанта уравнения d. 2. Если d >= 0, определяются y1 и y2, а иначе корней нет. 3. Если y1, y2 < 0, то корней нет. 4. Если y1, y2 >= 0, то вычисляются четыре корня по формулам 1.3 и выводятся значения корней.
5. Если условия 3) и 4) не выполняются, то необходимо проверить знак y1. Если y1 >= 0, то вычисляются два корня по формуле 1.4. Если же y2 >= 0, то вычисляются два корня по формуле 1.5. Вычисленные значения корней выводятся.
Еще раз обратимся к алгоритмам на рис. 1.5, 1.12, 1.13. Нетрудно заметить, что если a принимает значение 0, алгоритмы не работают (ведь на 0 делить нельзя). Это - недостаток алгоритмов. Его можно избежать, если проверять значение переменной a сразу после ввода. Алгоритмы такой проверки приведены ниже. В первом случае (рис. 1.14), если введенное значение переменной a = 0, выполнение вычислительного процесса сразу же прекращается. Алгоритм, изображённый на рис. 1.15, позволяет при нулевом значении а повторить ввод переменной. Этот процесс будет продолжаться до тех пор, пока а не станет отличным от нуля. Подобные алгоритмы называются циклическими.
Внимание!!! Перед вычислением значения математического выражения это выражение следует проанализировать: для всех ли значений переменных его можно вычислить. В алгоритме необходимо предусмотреть предварительную проверку переменных на значения, для которых выражение не может быть определено. Если, например, требуется вычислить корень четной степени, то нужно перед вычислением проверить подкоренное выражение - оно не должно принимать отрицательные значения, а в случае с дробью - проверить знаменатель на 0. В блок-схеме такие проверки реализуются с помощью условного блока. Отсутствие таких проверок в программе может привести к критическим ошибкам.
ПРИМЕР 1.7. Решить кубическое уравнение ax3+ bx2 + cx + d=0. Кубическое уравнение имеет вид
После деления на a уравнение (1.6) принимает канонический вид:
где r = b/a, s = c = a, t = d/a. В уравнении (1.7) сделаем замену x = y - y/3 и получим приведенное уравнение (1.8)
Корни приведенного уравнения могут быть рассчитаны по формулам Кардано (1.9).
При отрицательном дискриминанте уравнение (1.6) имеет 3 действительных корня, но они будут вычисляться через вспомогательные комплексные величины. Чтобы избавиться от этого, можно воспользоваться формулами (1.10)
Таким образом, при положительном дискриминанте кубического уравнения (1.8) расчет корней будем вести по формулам (1.9), а при отрицательном - по формулам (1.10). После расчета корней приведенного уравнения (1.8) по формулам (1.9) или (1.10) необходимо по формуле xk = yk - y/3, где k = 1, 2, 3 перейти к корням заданного кубического уравнения (1.6). Блок-схема решения кубического уравнения представлена на рис. 1.17. Описание блок-схемы. В блоке 1 вводятся коэффициенты кубического уравнения, в блоках 2-3 рассчитываются коэффициенты канонического и приведенного уравнений. Блок 4 предназначен для вычисления дискриминанта. В блоке 5 проверяется знак дискриминанта кубического уравнения. Если он отрицателен, то корни вычисляются по формулам (1.10) (блоки 6-7). При положительном значении дискриминанта расчет идет по формулам (1.9) (блок 9). Блоки 8 и 10 предназначены для вывода результатов на экран.
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|