function f(x: real): real;
begin
f := x * x - cos(x);
end;

procedure solve(start_x, stop_x, e: real);
var
step_x, last_f, cur_f, x: real;
begin
step_x := (stop_x - start_x) / 100;
x := start_x;
last_f := f(x);

repeat
x := x + step_x;
cur_f := f(x);

if cur_f * last_f < 0 then begin
if step_x < e then
writeln(x:20:10, ' ', f(x):20:10)
else
solve(x - step_x, x, e);
end;
last_f := cur_f;
until x > stop_x;
end;

begin
solve(-1000, 1000, 0.0000001);
writeln('END');
end.

Ответы и объяснения

2013-11-23T19:31:05+00:00

Это Проверенный ответ

×
Проверенные ответы содержат надёжную, заслуживающую доверия информацию, оценённую командой экспертов. На "Знаниях" вы найдёте миллионы ответов, правильность которых подтвердили активные участники сообщества, но Проверенные ответы - это лучшие из лучших.
Function f(x: real): real;
begin
    f := x * x - cos(x);
end;

procedure solve(start_x, stop_x, e: real);
var
    step_x, last_f, cur_f, x: real;
begin
    step_x := (stop_x - start_x) / 100;
    x := start_x;
    last_f := f(x);
   
    repeat
        x := x + step_x;
        cur_f := f(x);
       
        if cur_f * last_f < 0 then begin
            if step_x < e then
                writeln(x:20:10, ' ', f(x):20:10)
            else
                solve(x - step_x, x, e);
        end;
       
        last_f := cur_f;
    until x > stop_x;
end;

begin
    solve(-1000, 1000, 0.0000001);
    writeln('END');
end.