Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cmath>
- using namespace std;
- int main()
- {
- setlocale(LC_ALL, "Russian");
- float k,b;
- cout << "Ур. прямой: y=kx+b. Введите:\n";
- cout << "k = ";
- cin >> k;
- cout << "b = ";
- cin >> b;
- float r,x,y;
- cout << "Окружность задана радиусом и центром окружности. Введите:\n";
- cout << "x = ";
- cin >> x;
- cout << "y = ";
- cin >> y;
- cout << "r = ";
- cin >> r;
- float x1,x2;
- //находим дискременант квадратного уравнения
- float d=(pow((2*k*b-2*x-2*y*k),2)-(4+4*k*k)*(b*b-r*r+x*x+y*y-2*y*b));
- if(d<0) {cout<<"\n\nПрямая и окружность не пересекаются";}
- else //иначе находим корни квадратного уравнения
- {
- x1=((-(2*k*b-2*x-2*y*k)-sqrt(d))/(2+2*k*k));
- x2=((-(2*k*b-2*x-2*y*k)+sqrt(d))/(2+2*k*k));
- }
- //если абсциссы точек совпадают, то пересечение только в одной точке
- if (x1==x2)
- {
- cout << "\n\nПрямая и окружность имеют точку касания: (" << x1<<";"<<y1<<")";}
- else
- {
- float y1=k*x1+b;
- float y2=k*x2+b;
- cout << "\n\nПрямая и окружность пересекаются в точках: (" <<x1<<";"<<y1<<") и ("<<x2<<";"<<y2<<")"; }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement