Advertisement
Guest User

123

a guest
May 23rd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.48 KB | None | 0 0
  1. #include <iostream>
  2. #include <cmath>
  3. using namespace std;
  4.  
  5.  
  6. int main()
  7. {
  8.     setlocale(LC_ALL, "Russian");
  9.  
  10.     float k,b;
  11.     cout << "Ур. прямой: y=kx+b. Введите:\n";
  12.     cout << "k = ";
  13.     cin >> k;
  14.     cout << "b = ";
  15.     cin >> b;
  16.  
  17.     float r,x,y;
  18.     cout << "Окружность задана радиусом и центром окружности. Введите:\n";
  19.     cout << "x = ";
  20.     cin >> x;
  21.     cout << "y = ";
  22.     cin >> y;
  23.     cout << "r = ";
  24.     cin >> r;
  25.     float x1,x2;
  26.     //находим дискременант квадратного уравнения
  27.     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));
  28.     if(d<0) {cout<<"\n\nПрямая и окружность не пересекаются";}
  29.     else //иначе находим корни квадратного уравнения
  30.     {
  31.         x1=((-(2*k*b-2*x-2*y*k)-sqrt(d))/(2+2*k*k));
  32.         x2=((-(2*k*b-2*x-2*y*k)+sqrt(d))/(2+2*k*k));
  33.     }
  34.     //если абсциссы точек совпадают, то пересечение только в одной точке
  35.     if (x1==x2)
  36.     {
  37.     cout << "\n\nПрямая и окружность имеют точку касания: (" << x1<<";"<<y1<<")";}
  38.     else
  39.     {
  40.             float y1=k*x1+b;
  41.  float y2=k*x2+b;
  42.  cout << "\n\nПрямая и окружность пересекаются в точках: (" <<x1<<";"<<y1<<") и ("<<x2<<";"<<y2<<")"; }
  43.  
  44.  
  45.     return 0;
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement