Программа для вычисления функции - Pascal (80312)
Формулировка задачи:
Составить программу для вычисления функции (функция внизу), где x - меньший корень уравнения ax^2+bx+c=0. Значения a, b, с задавать при вводе. На экран дисплея вывести значения a, b, c, x, y. Спасибо
Решение задачи: «Программа для вычисления функции»
textual
Листинг программы
var a,b,c,d,x1,x2,x,y: real;
k:byte;
begin
writeln('Введите коэффициенты квадратного уравнения a,b,c');
readln(a,b,c);
d:=b*b-4*a*c;
k:=0;
if d<0 then write('Уравнение не имеет действительных корней')
else if d=0 then write('Уравнение имеет только 1 действительный корень')
else
begin
x1:=(-b-sqrt(d))/(2*a);
x2:=(-b+sqrt(d))/(2*a);
if x1<x2 then x:=x1
else x:=x2;
writeln('x1=',x1:0:3,' x2=',x2:0:3,' x=',x:0:3);
if x<0 then y:=x+cos(x)/(x*x-1)
else
begin
if x=0 then k:=1
else y:=(x*x+1)*cos(x)/(x*x);
end;
if k=1 then write('Значение Y не определено, деление на 0')
else write('Y=',y:0:3)
end;
end.
Объяснение кода листинга программы
- Объявление переменных:
a,b,c,d,x1,x2,x,y- вещественные числаk- целое без знака
- Ввод значений коэффициентов квадратного уравнения
a,bиcс помощью функцииreadln - Вычисление дискриминанта квадратного уравнения:
d := b*b - 4*a*c - Установление начального значения переменной
kкак 0:k := 0 - Проверка условия:
- Если дискриминант меньше 0, то выводится сообщение
Уравнение не имеет действительных корней - В ином случае, если дискриминант равен 0, выводится сообщение
Уравнение имеет только 1 действительный корень - В остальных случаях выполняется следующий блок:
- Если дискриминант меньше 0, то выводится сообщение
- Нахождение корней квадратного уравнения:
x1: = (-b-sqrt(d))/(2*a)иx2 := (-b+sqrt(d))/(2*a) - Проверка условия:
- Если
x1меньшеx2, тоxприсваивается значениеx1 - В противном случае
xприсваивается значениеx2
- Если
- Вывод корней уравнения
x1,x2иxс точностью до 3 десятичных знаков - Проверка условия:
- Если
xменьше 0, тоyприсваивается значениеx + cos(x)/(x*x-1) - В ином случае:
- Если
xравен 0, устанавливается значениеkравное 1 - В остальных случаях
yприсваивается значение(x*x+1)*cos(x)/(x*x)
- Если
- Если
- Проверка условия:
- Если
kравно 1, выводится сообщениеЗначение Y не определено, деление на 0 - В ином случае выводится значение
Yс точностью до 3 десятичных знаков.
- Если