Выбрать главу

for j:=1 to Length(morze) do // Разбираем строку Morze и проигрываем её

begin

write (morze [j]); // Вывод на экран буквы кодом Морзе

if morze[j]='-' then

begin

PlaySound(dash); Sleep(SoundLength(dash)); // играем dash

end

else

begin

PlaySound(dot); Sleep(SoundLength(dot)); // играем dot

end;

Sleep(50);

end;

write (' '); Sleep (500); // Пауза между буквами 500 мс

end; // end к внешнему оператору if

end.

- 45 -

Тема №17 Задача о квадратном уравнении

Решение квадратного уравнения выходит за рамки курса математики 7 класса, но мы сочли возможным внести эту классическую задачу программирования в дополнение.

Квадратным уравнением называется уравнение вида

ax2 + bx + c = 0

На первом этапе его решения определяется так называемый дискриминант:

d = b2 - 4ac

Далее рассматривают три случая

1. d < 0 – в этом случае вещественных решений нет[17];

2. d = 0 – один корень, определяемый формулой -b / 2a;

3. d > 0 – два корня, вычисляемых по формуле x1,2 = (-b ± √d)/2a, где знак «+» соответствует первому корню, а знак «–» – второму корню.

Составим программу для решения этой задачи:

Program SquareEquation;

var a, b, c : real; // Коэффициенты уравнения

d : real; // Дискриминант

x1, x2 : real; // Корни уравнения

begin

write ('Введите a, b, c ');

readln (a,b,c); // Ввод исходных данных

d:=b*b-4*a*c; // Вычисление дискриминанта

if d<0 then writeln('Решений нет')

else if d=0 then begin

x1:=-b/(2*a);

write('x=',x1)

end

else begin

x1:=(-b+sqrt(d))/(2*a);

x2:=(-b-sqrt(d))/(2*a);

write('x1=',x1,' x2=',x2)

end

end.

Последнюю ветвь else можно оптимизировать, убрав повторяющиеся вычисления (особенно вычисление квадратного корня)

else begin

d:=sqrt(d); a:=2*a;

x1:=(-b+d)/a;

x2:=(-b-d)/a;

write('x1=',x1,' x2=',x2)

end

- 46 -

01.06.2013

вернуться

17

Решение есть только в комплексных числах