Найти корни уравнения - Pascal ABC (14400)

Формулировка задачи:

На входе даётся число n. Нужно решить уравнение

Код к задаче: «Найти корни уравнения - Pascal ABC (14400)»

textual
//функция arcsin, в Паскаль АВС.net не нужна, там есть
function asin(x:real):real;
begin
if x=-1 then asin:=-pi/2
else if x=1 then asin:=pi/2
else asin:=arctan(x/sqrt(1-x*x));
end;
var n,a,b,c,d,x,x1,x2,as1,as2:real;
begin
write('n=');
readln(n);
if n=0 then write('Уравнение имеет 1 корень x=pi/2')
else
 begin
 //решаем квадратное уравнение относительно sin(x)
  a:=n*n;
  b:=2*n-1;
  c:=1;
  d:=b*b-4*a*c;
  writeln('d=',d:0:2);//для проверки
  if d<0 then write('Решений нет')
  else if d=0 then
   begin
    x:=-b/2*a;
    writeln('x=',x:0:2);//для проверки
    if abs(x)>1 then write('Решений нет')//|sin|<=1
    else write('Уравнение имеет 1 корень x=',asin(x):0:2);
   end
  else
   begin
    x1:=(-b+sqrt(d))/2/a;
    x2:=(-b-sqrt(d))/2/a;
    writeln('x1=',x1:0:2,'  x2=',x2:0:2);//для проверки
    if (abs(x1)>1)and(abs(x2)>1) then write('Решений нет')
    else if (abs(x1)<=1)and (abs(x2)>1)
    then write('Уравнение имеет 1 корень x=',asin(x1):0:2)
    else if (abs(x2)<=1)and (abs(x1)>1)
    then write('Уравнение имеет 1 корень x=',asin(x2):0:2)
    else write('Уравнение имеет 2 корня x1=',asin(x1):0:2,' x2=',asin(x2):0:2);
   end;
 end;
end.

15   голосов, оценка 4.133 из 5


СОХРАНИТЬ ССЫЛКУ