Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <iostream>
- using namespace std;
- class Figure {};
- class Line : public Figure {
- public:
- Line(int k, int b) {
- Line::b = b;
- Line::k = k;
- }
- int getK() {
- return k;
- }
- int getB() {
- return b;
- }
- private:
- int k, b;
- };
- class Circle : public Figure {
- public:
- Circle(int x, int y, int r) {
- Circle::x = x;
- Circle::y = y;
- }
- int getX() {
- return x;
- }
- int getY() {
- return y;
- }
- int getR() {
- return r;
- }
- private:
- int x, y, r;
- };
- int main()
- {
- setlocale(LC_ALL, "Russian");
- float k, b;
- cout << "Уравнение прямой: y = kx + b. Введите:\n";
- cout << "k = ";
- cin >> k;
- cout << "b = ";
- cin >> b;
- Line line(k, b);
- float r, x, y;
- cout << "\nОкружность задана радиусом и центром окружности. Введите:\n";
- cout << "x = ";
- cin >> x;
- cout << "y = ";
- cin >> y;
- cout << "r = ";
- cin >> r;
- Circle cirlce(x, y, r);
- if (y == k * x + b) {
- cout << "\nПрямая является диаметром окружности";
- }
- else {
- 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Прямая и окружность не пересекаются";
- }
- else {
- float x1 = ((-(2 * k*b - 2 * x - 2 * y*k) - sqrt(d)) / (2 + 2 * k*k));
- float x2 = ((-(2 * k*b - 2 * x - 2 * y*k) + sqrt(d)) / (2 + 2 * k*k));
- float y1 = k * x1 + b;
- float y2 = k * x2 + b;
- if (x1 == x2) {
- cout << "\nПрямая и окружность имеют точку касания: (" << x1 << ";" << y1 << ")";
- }
- else {
- cout << "\nПрямая и окружность пересекаются в точках: (" << x1 << ";" << y1 << ") и (" << x2 << ";" << y2 << ")";
- }
- }
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement