Var
y0, yk, yk1, eps, d: double;
i: integer;
begin
y0 := 0; yk1 := y0;
Write('Введите величину погрешности: ');
Readln(eps);
repeat
yk := (yk1 + 1) / (yk1 + 2);
d := yk - yk1;
if d >= eps then yk1 := yk
until d < eps;
Writeln('yn=', yk)
end.
Тестовое решение:
Введите величину погрешности: 1e-8
yn=0.618033988205325
Точки: 2,1; 2,5; 5,7; 8,5; 2,5; 8,1; 2,1; 8,5
Ответ:
Program triangle;
var ax,bx,cx,ay,by,cy:integer;
begin
Writeln('Введите координату А по Х');
Readln(ax);
Writeln('Введите координату B по Х');
Readln(bx);
Writeln('Введите координату C по Х');
Readln(cx);
Writeln('Введите координату А по Y');
Readln(ay);
Writeln('Введите координату B по Y');
Readln(by);
Writeln('Введите координату C по Y');
Readln(cy);
Writeln('Площадь треугольника равна ', 0.5*((ax-cx)*(by-cy)-(bx-cx)*(ay-cy)));
end.
Подробнее - на Znanija.com - znanija.com/task/4758960#readmore
Объяснение:
Здесь небольшая проблемка: при больших R некоторых частей функций не будет видно...
Но тем не менее;
uses Crt;
var x, y, R: real;
begin
ClrScr;
Write(' X = '); ReadLn(X);
Write(' R = '); ReadLn(R);
if x<=-R then y:=-3 else
if (x>=-R) and (x<=R) then y:=-sqrt(R*R-x*x) else
if (x>R) and (x<6) then y:=3+6*(x-6)/(R-6) else
if (x>=6) then y:=(x-9);
ReadLn;
end.
Единственное, что осталось - распечатать значения Y...
Но по условию распечатка Y вроде не требуется... Или я чего-то не понимаю...