Входные данные Шесть чисел – координаты центра и радиус окружности и коэффициенты A, B и...

0 голосов
104 просмотров

Входные данные Шесть чисел – координаты центра и радиус окружности и коэффициенты A, B и C нормального уравнения прямой. Выходные данные В первой строке одно число K, равное количеству точек пересечения прямой с окружностью. Далее в K строках координаты самих точек. Примеры входные данные 2 3 1 1 -1 0 выходные данные 2 3.00000 3.00000 2.00000 2.00000


Информатика (136 баллов) | 104 просмотров
0

Тут математики больше. чем информатики ))

Дан 1 ответ
0 голосов
Правильный ответ

PascalABC.NET 3.4.2, сборка 1881 от 19.11.2018

Внимание! Если программа не работает, обновите версию!

begin

 var xc, yc, R, A, B, C: real;

 Read(xc, yc, R, A, B, C);

 var alpha := A * A + B * B;

 var beta := 2 * (xc * A * B - yc * A * A + B * C);

 var gamma := 2 * xc * A * C + Sqr(xc * A) + C * C + Sqr(yc * A) - Sqr(R * A);

 var D := Sqr(beta) - 4 * alpha * gamma;

 if D < 0 then Println(0)

 else

 if D = 0 then

 begin

   var y := -beta / (2 * alpha);

   var x := -(B * y + C) / A;

   Println(1);

   Writeln('x=', x:0:5, '   y=', y:0:5)

 end

   else

 begin

   D := Sqrt(D);

   var y := (-beta - D) / (2 * alpha);

   var x := -(B * y + C) / A;

   Println(2);

   Writeln('x=', x:0:5, '   y=', y:0:5);

   y := (-beta + D) / (2 * alpha);

   x := -(B * y + C) / A;

   Writeln('x=', x:0:5, '   y=', y:0:5)

 end

end.

Пример

2 3 1 1 -1 0

2

x=2.00000   y=2.00000

x=3.00000   y=3.00000


image
(654k баллов)
0

Забыл упомянуть, что на С++. Моя ошибка.

0

Перепишите, это несложно, алгоритм виден, а языки почти не отличаются