Для начала задачу нужно решить чисто математически, решения приведены на листочках. Поскольку задача школьная, то вариант совпадения точек не рассматриваетсяАлгоритмического языка не знаю, но поскольку это вариант псевдокода, то думаю алгоритм вполне понятеналг Круг_по_двум_точкам_и_радиусу(арг действ Ax, арг действ Ay, арг действ Bx, арг действ By, арг действ r) дано | A,B,r надо | нарисовать окружностьнач ввод Ax, Ay, Bx, By, r действ dAB = ((Ax - Bx)^2 + (Ay - By)^2)^(0.5) // длина АВ действ h = (r^2-dAB^2/4)^(0.5) // высота и длина вектора ОМ // М середина АВ действ Mx = (Ax + Bx) / 2 действ My = (Ay + By) / 2 //первый круг действ Ox = Mx + (Ay - By) * h/dAB действ Oy = My - (Ax - Bx) * h/dAB нарисовать_круг(Ox, Oy, r) //второй круг Ox = Mx - (Ay - By) * h/dAB Oy = My + (Ax - Bx) * h/dAB нарисовать_круг(Ox, Oy, r)кон//PascalABC.NET версия 3.3.1590 от 03.12.2017//Если программа не запускается, то обновите версиюuses GraphABC;const zoom = 100;var Ax, Ay, Bx, By, r: real;begin readln(Ax, Ay, Bx, By, r); var dAB := sqrt(sqr(Ax - Bx) + sqr(Ay - By)); // длина АВ var h := sqrt(r * r - dAB * dAB / 4); // высота и длина вектора ОМ // М середина АВ var Mx := (Ax + Bx) / 2; var My := (Ay + By) / 2; //первый круг var Ox := Mx + (By - Ay) * h / dAB; var Oy := My - (Bx - Ax) * h / dAB; DrawCircle(round(Ox * zoom), round(Oy * zoom), round(r * zoom)); //второй круг Ox := Mx - (By - Ay) * h / dAB; Oy := My + (Bx - Ax) * h / dAB; DrawCircle(round(Ox * zoom), round(Oy * zoom), round(r * zoom));end.