Составить алгоритм решения квадратного уравнения

Составить алгоритм решения квадратного уравнения

Задача хорошо знакома из математики. Исходными данными здесь являются коэффициенты a, b, c. Решением в общем случае являются два корня x1 и x2, которые вычисляются по формулам:

Все величины, используемые в этой программе, имеют вещественный тип.

алг корни квадратного уравнения

вещ a, b, c, x1, x2, d

начввод a, b, c

Кон

Слабость такого алгоритма видна «невооруженным глазом». Он не обладает важнейшим свойством, предъявляемым к качественным алгоритмам: универсальностью по отношению к исходным данным. Какими бы ни были значения исходных данных, алгоритм должен приводить к определенному результату и выходить на конец. Результатом может быть числовой ответ, но может быть и сообщение о том, что при таких данных задача решения не имеет. Недопустимы остановки в середине алгоритма из-за невозможности выполнить какую-то операцию. Это же свойство в литературе по программированию называют результативностью алгоритма (в любом случае должен быть получен какой-то результат).

Чтобы построить универсальный алгоритм, сначала требуется тщательно проанализировать математическое содержание задачи.

Решение уравнения зависит от значений коэффициентов a, b, c. Вот анализ этой задачи (ограничиваемся только поиском вещественных корней):

если a=0, b=0, c=0, то любое х – решение уравнения;

если a=0, b=0, c¹0, то уравнение решений не имеет;

если a=0, b¹0, то это линейное уравнение, которое имеет одно решение: x=–c/b;

если a¹0 и d=b 2 -4ac³0, то уравнение имеет два вещественных корня (формулы приведены выше);

кв

кв

Кон

В этом алгоритме многократно использована структурная команда ветвления. Общий вид команды ветвления в блок-схемах и на алгоритмическом языке следующий:

еслиусловие то серия 1 иначе серия 2 кв

Вначале проверяется «условие» (вычисляется отношение, логическое выражение). Если условие истинно, то выполняется «серия 1» – последовательность команд, на которую указывает стрелка с надписью «да» (положительная ветвь). В противном случае выполняется «серия 2» (отрицательная ветвь). В АЯ условие записывается после служебного слова «если», положительная ветвь – после слова «то», отрицательная – после слова «иначе». Буквы «кв» обозначают конец ветвления.

Читайте также:  Тест несколько правильных ответов

Если на ветвях одного ветвления содержатся другие ветвления, то такой алгоритм имеет структуру вложенных ветвлений. Именно такую структуру имеет алгоритм «корни квадратного уравнения». В нем для краткости вместо слов «да» и «нет» использованы соответственно «+» и «–».

Рассмотрим следующую задачу: дано целое положительное число n. Требуется вычислить n! (n-факториал). Вспомним определение факториала.

Ниже приведена блок-схема алгоритма. В нем используются три переменные целого типа: n – аргумент; i – промежуточная переменная; F – результат. Для проверки правильности алгоритма построена трассировочная таблица. В такой таблице для конкретных значений исходных данных по шагам прослеживается изменение переменных, входящих в алгоритм. Данная таблица составлена для случая n=3.

Шаг n F i Условие вывод 1£3, да 2£3, да 3£3, да 4£3, нет

Трассировка доказывает правильность алгоритма. Теперь запишем этот алгоритм на алгоритмическом языке.

алгФакториал

целn, i, F

нач ввод n

F:=1; i:=1

пока i£n, повторять

нц F:=F´i

кц

Кон

Этот алгоритм имеет циклическую структуру. В алгоритме использована структурная команда «цикл-пока», или «цикл с предусловием». Общий вид команды «цикл-пока» в блок-схемах и в АЯ следующий:

пока условие, повторять нц серия кц

Повторяется выполнение серии команд (тела цикла), пока условие цикла истинно. Когда условие становится ложным, цикл заканчивает выполнение. Служебные слова «нц» и «кц» обозначают соответственно начало цикла и конец цикла.

Цикл с предусловием – это основная, но не единственная форма организации циклических алгоритмов. Другим вариантом является цикл с постусловием. Вернемся к алгоритму решения квадратного уравнения. К нему можно подойти с такой позиции: если a=0, то это уже не квадратное уравнение и его можно не рассматривать. В таком случае будем считать, что пользователь ошибся при вводе данных и следует предложить ему повторить ввод. Иначе говоря, в алгоритме будет предусмотрен контроль достоверности исходных данных с предоставлением пользователю возможности исправить ошибку. Наличие такого контроля – еще один признак хорошего качества программы.

Читайте также:  Можно ли разблокировать симку мегафон
алгквадратное уравнение вещa, b, c, d, x1, x2 нач повторять ввод a, b, c до a¹0 d:=b 2 –4ac если d³0 тоx1:=(–b+Öd)/(2a) x2:=(–b–Öd)/(2a) вывод x1, x2 иначе вывод “нет вещественных корней” кв кон

В общем виде структурная команда «цикл с постусловием» или «цикл-до» представляется так:

повторять серия доусловие

Здесь используется условие окончания цикла. Когда оно становится истинным, цикл заканчивает работу.

Составим алгоритм решения следующей задачи: даны два натуральных числа M и N. Требуется вычислить их наибольший общий делитель – НОД(M,N).

Эта задача решается с помощью метода, известного под названием алгоритма Евклида. Его идея основана на том свойстве, что если M>N, то НОД(M N то M:=M–N иначе N:=N–M кв кц кон

Алгоритм имеет структуру цикла с вложенным ветвлением. Проделайте самостоятельно трассировку этого алгоритма для случая M=18, N=12. В результате получится НОД=6, что, очевидно, верно.

Задача 1. Составить блок-схему и программу, находящие корни квадратного уравнения

ax 2 + bx + c = 0

ПРОГРАММА на БЕЙСИК

PRINT “Решение квадратного уравнения“

INPUT “Ввести a, b, c: “, a, b, c

d = b * b – 4 * a * c

THEN Х 1=(-b-sqr(d))/(2*a) : Х 2=(-b+sqr(d))/(2*a) : PRINT “Х1=“, Х1, “ Х2=“, Х2

ELSE PRINT “Действительных корней нет “

Запустите программу на выполнение и решите следующие квадратные уравнения:

а) 1125 х 2 — 45 х — 324 = 0

б) 502 х 2 — 38,5 х + 12,125 = 0

в) 16 х 2 — 256 х + 1024 = 0

Задача 2. Составить блок-схему и программу, определяющие количество корней квадратного уравнения

ПРОГРАММА на БЕЙСИК

PRINT “Количество корней квадратного уравнения“

INPUT “Ввести a, b, c: “, a, b, c

d = b * b – 4 * a * c

IF d > 0 THEN PRINT “2 разных корня“ ELSE PRINT “2 одинаковых корня“

ELSE PRINT “Действительных корней нет“

Читайте также:  Как перейти на 4g водафон

Запустите программу на выполнение и определите количество корней в следующих квадратных уравнениях:

а) 1125 х 2 — 45 х — 324 = 0

б) 502 х 2 — 38,5 х + 12,125 = 0

в) 16 х 2 — 256 х + 1024 = 0

Задача 3*. Составить блок-схему и программу, определяющие имеет ли квадратное уравнение ax 2 + bx + c = 0 хотя бы один корень, больший числа m .

Запустите программу на выполнение и определите имеется ли корень в следующих квадратных уравнениях:

а) 1125 х 2 — 45 х — 324 = 0 при m = 0

б) 502 х 2 — 38,5 х + 12,125 = 0 при m = 15

в) 16 х 2 — 256 х + 1024 = 0 при m = 7

Домашнее задание — Составить блок-схемы и программы для следующих задач:

Задача 1. Определить является ли введенное с клавиатуры число корнем квадратного уравнения ax 2 + bx + c = 0 .

var
a, b, c, d, x1, x2: real;

begin
textbackground(9);
clrscr;
write(‘Введите коэффициент A ‘); readln(a);
write(‘Введите коэффициент B ‘); readln(b);
write(‘Введите коэффициент C ‘); readln(c);
write(‘Уравнение: ‘, a, ‘x2+’, b); writeln(‘x+’, c, ‘=0’);
D := (b * b) — (4 * a * c);
if (a = b) and (b = c) and (c = 0)
then
writeln(‘Корней бесчисленное множество’)
else
if (a = b) and (b = 0) and (c <> 0)
then
writeln(‘Уравнение корней не имеет’)
else
if d = 0
then
begin
writeln(‘Уравнение имеет два одинаковых корня’);
writeln(‘x1=x2=’, -b / (2 * a):0:2);
end
else
if a = 0
then begin
writeln(‘Линейное уравнение, имеет один корень’);
writeln(‘x=’, (-c / b));
end
else
if d Похожие вопросы

«>

Ссылка на основную публикацию
Adblock detector